@mcp-s/connectors 0.0.20261024071613 → 0.0.20261024083619

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"id":"super-admin","status":"super-admin","internal_status":"tool-works","definition":{"display":{"name":"Willow Super Admin","description":"Cross-organization super-admin operations for Willow: browse organizations, growth and POV activity, an org's configured MCP servers, support access, MCP health, and AI-risk migration status; cross-org analytics (WQL → JSON) and dashboards; plus the connector catalog — draft a connector from a description, pull its tools off the live MCP server, verify a credential, then snapshot, test on chosen MCP servers, and release. Access is restricted to Willow super admins.","icon":"willow-admin.svg","category":"other","docs_url":"https://docs.withwillow.ai/api/webrix-api"},"configuration":{"type":"object","properties":{"webrixAdminUrl":{"type":"string","title":"Willow Admin URL"}},"required":["webrixAdminUrl"]},"api":{"base_url":""},"auth":{"methods":{"proxy-passthrough":{}}},"tools":[{"name":"List Organizations","description":"List Willow organizations across the whole platform (super admin), with pagination, search and filters. Each org is enriched with its admins and usage stats (integrations, skills, users, tool calls over the last 30 days, last use).","slug":"list_organizations","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"search":{"type":"string","description":"Search term to filter organizations by name, slug or admin email."},"setup":{"type":"string","description":"Filter by POV/setup state (e.g. a setup step or 'configured'). Optional."},"premium":{"type":"string","description":"Filter by premium status. Pass 'true' or 'false' to only include premium / non-premium orgs."},"limit":{"type":"number","description":"Maximum number of organizations to return (default 20)."},"skip":{"type":"number","description":"Number of organizations to skip for pagination (default 0)."}},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/organizations","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"search\": arguments.search,\n \"setup\": arguments.setup,\n \"premium\": arguments.premium,\n \"limit\": arguments.limit,\n \"skip\": arguments.skip,\n \"enrich\": \"true\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Search Organizations","description":"Lightweight organization search (super admin). Returns only id, name and slug for each match — useful for quickly resolving an organization id before calling other tools.","slug":"search_organizations","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"search":{"type":"string","description":"Search term (name / slug / admin email)."},"limit":{"type":"number","description":"Maximum number of results to return (default 25, max 100)."},"skip":{"type":"number","description":"Number of results to skip for pagination (default 0)."}},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/organizations/search","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"search\": arguments.search,\n \"limit\": arguments.limit,\n \"skip\": arguments.skip\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Identify Id","description":"Resolve raw ids to what they actually are (super admin). Pass one id or a comma-separated batch and each is matched against organizations, users, admins and background agents platform-wide; matches come back with the name, the email (users and admins), the owning organization id/name/slug, the creation time and a few type-specific details (org status and premium, whether a user is a machine user, an admin's role, an agent's slug and status). Ids that match nothing are listed under 'unresolved'.\n\nUse this first whenever a question hands you a bare id — from an audit log row, an alert, a support ticket or a URL — and you do not yet know whether it is an org, a person or an agent, or which org it belongs to. Search Organizations only matches names, slugs and admin emails, so it will never find an id.\n\nOnly accepts uuids, and at most 25 per call.","slug":"identify_id","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"ids":{"type":"string","description":"One id, or a comma-separated list of up to 25 ids, to resolve."}},"required":["ids"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/identify","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"ids\": arguments.ids\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Organization Growth","description":"Get platform-wide new-organization counts bucketed daily, weekly and monthly (super admin). Useful for tracking signup / growth trends.","slug":"get_organization_growth","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/organizations/new-counts","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Organization POV Activity","description":"Get a 7-day activity snapshot for one or more organizations (super admin): tool calls, active users, admin actions, new connections and the all-time last-use timestamp. Pass a single organization id, or a comma-separated list to fetch several at once.","slug":"get_organization_pov_activity","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"orgId":{"type":"string","description":"A single organization id. Returns a flat activity object. Use this OR orgIds."},"orgIds":{"type":"string","description":"Comma-separated list of organization ids. Returns a map of orgId -> activity. Use this OR orgId."}},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/organizations/pov-activity","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"orgId\": arguments.orgId,\n \"orgIds\": arguments.orgIds\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Organization Setup Status","description":"Get a target organization's POV setup configuration together with live per-step auto-detection (super admin). Requires the organization id.","slug":"get_organization_setup_status","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"orgId":{"type":"string","description":"The organization id to inspect."}},"required":["orgId"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/organizations/setup-status","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"orgId\": arguments.orgId\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Organization MCP Servers","description":"List the MCP servers (integrations) configured in one organization, with their stored configuration (super admin). Each row includes the display name and slug, the connector it was created from, active/draft status and whether it is disabled, the proxy target for remote MCPs, and the request settings (base URL, header names, timeouts, response caps, proxy sync flags). Requires the organization id — use Search Organizations first to resolve it.\n\nCredentials are redacted: auth_settings is reduced to its authType, and header and settings values come back as '[redacted]'. The mcp_proxy config keeps its shape (URL host and path, command) but every header and env value, URL userinfo and query value, auth token and secret command-line arg is '[redacted]'; {{vault.*}} placeholders are kept. The per-tool list is not included — use Get MCP Health for a server's tool-level outcomes.","slug":"get_organization_mcp_servers","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"orgId":{"type":"string","description":"The organization id whose MCP servers to list."}},"required":["orgId"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/integrations","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"org_id\": arguments.orgId,\n \"redact\": \"true\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Organization Audit Logs","description":"Read a specific organization's runtime audit logs (super admin): tool calls, gateway inits, connects, webhooks, guard checks and connector auth events, newest first. Requires the organization id — use Search Organizations first to resolve it.\n\nIMPORTANT — this query scans the org's entire audit-log history and can be very expensive. ALWAYS narrow it as much as you possibly can: keep the time window short (it defaults to the last 24 hours) and pass every filter you already know (action, mcpServer, success, userId, mcpClient). Never widen the date range or raise the limit just to 'see more' — instead add filters, and page with skip only when you genuinely need the next page. Start with the default limit of 10 and increase only if the answer truly requires it.\n\nTool arguments and responses are stripped from the returned rows, so this shows which calls happened, by whom, and whether they succeeded — not the customer data they carried.","slug":"get_organization_audit_logs","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"orgId":{"type":"string","description":"The organization id whose audit logs to read."},"start_date":{"type":"string","description":"Start of the window, ISO 8601 timestamp (inclusive). Defaults to 24 hours ago. Keep the window as narrow as the question allows."},"end_date":{"type":"string","description":"End of the window, ISO 8601 timestamp (inclusive). Defaults to now."},"limit":{"type":"number","description":"Number of log rows to return (default 10, maximum 100). Values above 100 are clamped to 100."},"skip":{"type":"number","description":"Number of rows to skip for pagination (default 0). The response's pagination.hasMore tells you whether another page exists."},"action":{"type":"string","description":"Filter by action type, or a comma-separated list. Common values: 'tool_call', 'init', 'connect', 'webhook', 'guard_check', 'connector_auth', 'get_prompt', 'add_skill'. Strongly recommended — most questions only concern one action type."},"mcpServer":{"type":"string","description":"Filter by MCP server / integration slug (e.g. 'github', 'slack'). Note slugs are only unique within an organization."},"status":{"type":"string","description":"Filter tool-call outcome: 'true' for successes only, 'false' for failures only. Omit for both."},"userId":{"type":"string","description":"Filter by the acting user or background-agent id. Filtering by email is not supported — each returned row includes the user's email and name, so read them off the results."},"mcpClient":{"type":"string","description":"Filter by AI client slug (e.g. 'cursor', 'claude', 'vscode')."},"tool":{"type":"string","description":"Filter by exact tool slug within an MCP server. Use together with mcpServer."}},"required":["orgId"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/organizations/audit-logs","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"orgId\": arguments.orgId,\n \"start_date\": arguments.start_date,\n \"end_date\": arguments.end_date,\n \"limit\": arguments.limit,\n \"skip\": arguments.skip,\n \"action\": arguments.action,\n \"tool_call_mcp\": arguments.mcpServer,\n \"tool_call_success\": arguments.status,\n \"user_id\": arguments.userId,\n \"mcp_client\": arguments.mcpClient,\n \"tool_call_tool\": arguments.tool\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"List Support Access","description":"List every organization that currently has Willow support access enabled — i.e. the shared support identity is one of its admins (super admin). Returns each org's id and name.","slug":"list_support_access","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/support-access","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get MCP Health","description":"For a given integration slug, return the last audit-log result (success and timestamp) for each of its tools (super admin). Useful for spotting integrations whose tools are failing.","slug":"get_mcp_health","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"The integration slug to check health for."}},"required":["slug"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/mcp-health/{slug}","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"slug\": arguments.slug\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Risk Migration Status","description":"Get counts of assets missing AI-risk or policy metadata across the platform (super admin): skills, toolkits and integration tools that still need an AI-risk level and/or policy check.","slug":"get_risk_migration_status","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/risk-migration","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Super Admin Analytics Guide","description":"Return the how-to guide for cross-org analytics over Willow Super Admin MCP: recommended agent flow (guide → generate or write WQL → run → JSON), Willow Query Language grammar, org-scoping with the `org` field, and dashboard payload examples. Call this before generate_super_admin_analytics_query or run_super_admin_analytics. Read-only.","slug":"get_super_admin_analytics_guide","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin cross-org analytics endpoint; it does not mutate telemetry or org configuration.","calculated_at":"2026-10-21T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/analytics/guide","method":"GET","responseType":"text","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Super Admin Analytics Catalog","description":"Return the cross-org analytics catalog: datasets, dimensions (including `org`), metrics, filters, metric functions, and query templates. Use these names when writing WQL or interpreting generate_super_admin_analytics_query output. Read-only.","slug":"get_super_admin_analytics_catalog","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin cross-org analytics endpoint; it does not mutate telemetry or org configuration.","calculated_at":"2026-10-21T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/analytics/catalog","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Generate Super Admin Analytics Query","description":"Turn a natural-language cross-org analytics question into a validated Willow Query Language (WQL) statement and compiled query spec (same AI flow as Super Admin → Dashboards). Call get_super_admin_analytics_guide first. Pass the returned wql to run_super_admin_analytics to get JSON results. Requires the platform OpenAI key. Read-only.","slug":"generate_super_admin_analytics_query","ai_risk":{"level":"low","score":2,"reasoning":"This tool only generates a cross-org query; it does not run it or mutate data.","calculated_at":"2026-10-21T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"description":{"type":"string","description":"Plain-English question, e.g. \"tool calls by organization over the last 7 days\""},"current_query":{"type":"string","description":"Optional existing WQL to refine instead of replacing from scratch"}},"required":["description"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/analytics/ai-generate","method":"POST","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","body":"{\n \"description\": arguments.description,\n \"currentQuery\": arguments.current_query\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Run Super Admin Analytics","description":"Run a cross-org analytics query (WQL string or compiled spec) against platform telemetry and return JSON (columns, rows, meta). Same engine as Super Admin dashboards. Set format=csv for spreadsheet text. Prefer generate_super_admin_analytics_query for natural-language questions. Call get_super_admin_analytics_guide for grammar, workflow, and org scoping. Read-only.","slug":"run_super_admin_analytics","ai_risk":{"level":"low","score":2,"reasoning":"This tool runs a catalog-constrained cross-org analytics query and returns JSON; it does not mutate data.","calculated_at":"2026-10-21T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"wql":{"type":"string","description":"Willow Query Language statement to run (preferred). Example: tool_calls | count by org from -7d to now as bar"},"spec":{"type":"object","description":"Compiled query spec from generate_super_admin_analytics_query. Use when you already have the spec object instead of WQL.","additionalProperties":true},"format":{"type":"string","enum":["json","csv"],"description":"Response format. Defaults to json (best for agents). Use csv for spreadsheet export."}},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/analytics/query","method":"POST","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","body":"{\n \"wql\": arguments.wql,\n \"spec\": arguments.spec,\n \"format\": arguments.format ? arguments.format : \"json\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"List Super Admin Dashboards","description":"List saved cross-org analytics dashboards. Each item includes an absolute `url` to open in Super Admin → Dashboards. Read-only.","slug":"list_super_admin_dashboards","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin cross-org analytics endpoint; it does not mutate telemetry or org configuration.","calculated_at":"2026-10-21T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"search":{"type":"string","description":"Optional title search filter"},"cursor":{"type":"number","description":"Zero-based cursor offset for pagination (default: 0)"},"limit":{"type":"number","description":"Maximum number of dashboards to return (default: 100)"}},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/dashboards","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"search\": arguments.search,\n \"cursor\": arguments.cursor,\n \"limit\": arguments.limit\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Super Admin Dashboard","description":"Fetch a single cross-org analytics dashboard by id, including layout visuals and an absolute `url` for the super-admin UI. Read-only.","slug":"get_super_admin_dashboard","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin cross-org analytics endpoint; it does not mutate telemetry or org configuration.","calculated_at":"2026-10-21T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Dashboard id returned by create_super_admin_dashboard or list_super_admin_dashboards"}},"required":["id"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/dashboards/{id}","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"id\": arguments.id\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Create Super Admin Dashboard","description":"Create a cross-org analytics dashboard (same as Super Admin → Dashboards). Pass title and optional layout visuals; each visual needs title plus wql or spec (from generate_super_admin_analytics_query). Returns { data, url } — open url in the super-admin UI. Call get_super_admin_analytics_guide for the payload shape.","slug":"create_super_admin_dashboard","ai_risk":{"level":"low","score":4,"reasoning":"Creates or updates a saved cross-org analytics dashboard via standard CRUD; it does not mutate telemetry.","calculated_at":"2026-10-21T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Dashboard title"},"description":{"type":"string","description":"Optional dashboard description"},"layout":{"type":"array","description":"Visuals to place on the dashboard. Each item needs title plus wql or spec. w is column span (1=half, 2=full).","items":{"type":"object","properties":{"id":{"type":"string","description":"Optional visual id (auto-generated if omitted)"},"title":{"type":"string","description":"Visual title"},"description":{"type":"string","description":"Optional visual description"},"wql":{"type":"string","description":"Willow Query Language for this visual (preferred). Compiled server-side when spec is omitted."},"spec":{"type":"object","description":"Compiled query spec from generate_super_admin_analytics_query. Use instead of wql when you already have the object.","additionalProperties":true},"w":{"type":"number","enum":[1,2],"description":"Column span: 1 = half width, 2 = full width (default 1)"},"h":{"type":"number","description":"Optional row-height multiplier"}},"required":["title"],"additionalProperties":false}},"filters":{"type":"object","description":"Optional shared dashboard filters (time preset and field variables).","additionalProperties":true}},"required":["title"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/dashboards","method":"POST","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","body":"{\n \"title\": arguments.title,\n \"description\": arguments.description,\n \"layout\": arguments.layout,\n \"filters\": arguments.filters\n }"}},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false}},{"name":"Update Super Admin Dashboard","description":"Update an existing cross-org analytics dashboard by id. Only provided fields change; layout fully replaces the current visuals when set. Each visual needs title plus wql or spec. Returns { data, url }.","slug":"update_super_admin_dashboard","ai_risk":{"level":"low","score":4,"reasoning":"Creates or updates a saved cross-org analytics dashboard via standard CRUD; it does not mutate telemetry.","calculated_at":"2026-10-21T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Dashboard id to update"},"title":{"type":"string","description":"New dashboard title"},"description":{"type":"string","description":"New dashboard description (pass empty string to clear)"},"layout":{"type":"array","description":"Full replacement layout. Each visual needs title plus wql or spec.","items":{"type":"object","properties":{"id":{"type":"string","description":"Visual id — reuse existing ids when editing, or omit to create new visuals"},"title":{"type":"string","description":"Visual title"},"description":{"type":"string","description":"Optional visual description"},"wql":{"type":"string","description":"Willow Query Language for this visual (preferred). Compiled server-side when spec is omitted."},"spec":{"type":"object","description":"Compiled query spec from generate_super_admin_analytics_query. Use instead of wql when you already have the object.","additionalProperties":true},"w":{"type":"number","enum":[1,2],"description":"Column span: 1 = half width, 2 = full width (default 1)"},"h":{"type":"number","description":"Optional row-height multiplier"}},"required":["title"],"additionalProperties":false}},"filters":{"type":"object","description":"Replacement shared dashboard filters","additionalProperties":true}},"required":["id"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/dashboards/{id}","method":"PATCH","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"id\": arguments.id\n }","body":"{\n \"title\": arguments.title,\n \"description\": arguments.description,\n \"layout\": arguments.layout,\n \"filters\": arguments.filters\n }"}},"annotations":{"readOnlyHint":false,"idempotentHint":true,"destructiveHint":false}},{"name":"List Catalog Connectors","description":"List the connectors in the platform catalog (super admin). Each entry carries its slug, kind ('mcp' for a proxied MCP server, 'api' for a REST connector), catalog status, the applications it covers (e.g. ['jira','confluence']), the released version, the risk score, and how many organizations have installed it.\n\nOnly connectors authored in the newer catalog definition shape are listed; the older hand-written connector objects are not.","slug":"list_catalog_connectors","ai_risk":{"level":"low","score":1,"reasoning":"Reads platform connector definitions. No customer data and no credentials — stored secrets are redacted by the endpoint.","calculated_at":"2026-09-20T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"search":{"type":"string","description":"Filter by name, slug, or application."},"kind":{"type":"string","enum":["mcp","api"],"description":"Only connectors of this kind."},"status":{"type":"string","description":"Comma-separated catalog statuses: draft, soon, beta, active, super-admin, hidden."},"application":{"type":"string","description":"Comma-separated product names; matches a connector covering any of them."}},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/connectors","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"search\": arguments.search,\n \"kind\": arguments.kind,\n \"status\": arguments.status,\n \"application\": arguments.application\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Catalog Connector","description":"Read one catalog connector in full (super admin): display metadata, endpoint, auth methods and default OAuth scopes, the verification probe, the published tool list, webhook triggers, risk score, and the integration template with its per-field inheritance modes.\n\nThis returns the working copy — the version organizations resolve is `released_version`. Stored client secrets are replaced with a `hasClientSecret` flag.","slug":"get_catalog_connector","ai_risk":{"level":"low","score":1,"reasoning":"Reads platform connector definitions. No customer data and no credentials — stored secrets are redacted by the endpoint.","calculated_at":"2026-09-20T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"The connector slug."}},"required":["slug"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/connectors/{slug}","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"slug\": arguments.slug\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Catalog Connector Template","description":"Show the MCP server an organization would get if it installed this connector right now, field by field, plus the connector's setup instructions. Every field is inherited from the connector until the organization edits it; `locked` fields cannot be overridden at all. Use this to check a connector before releasing it.","slug":"get_catalog_connector_template","ai_risk":{"level":"low","score":1,"reasoning":"Reads platform connector definitions. No customer data and no credentials — stored secrets are redacted by the endpoint.","calculated_at":"2026-09-20T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"The connector slug."}},"required":["slug"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/connectors/{slug}/template","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"slug\": arguments.slug\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Catalog Connector Usage","description":"List the organizations running an MCP server on this catalog connector, with how many they have each and when they last installed one. Check this before releasing a version or deleting a connector.","slug":"get_catalog_connector_usage","ai_risk":{"level":"low","score":1,"reasoning":"Reads platform connector definitions. No customer data and no credentials — stored secrets are redacted by the endpoint.","calculated_at":"2026-09-20T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"The connector slug."}},"required":["slug"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/connectors/{slug}/usage","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"slug\": arguments.slug\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Draft Catalog Connector","description":"Draft a connector from a plain-language description of an application, without saving anything. Returns the proposed slug, kind, applications and definition — endpoint, auth methods, default OAuth scopes, category and verification probe — together with a confidence level and the assumptions it made.\n\nStart here when adding an unfamiliar application: read the assumptions and correct what is wrong, then commit the definition as src/connectors/<slug>/<slug>.connector.ts in the webrix-ai/connectors repository and add it to src/connectors/index.ts there. Tools are never drafted; pull them from the server with Discover Catalog Connector Tools instead.","slug":"draft_catalog_connector","ai_risk":{"level":"low","score":1,"reasoning":"Reads platform connector definitions. No customer data and no credentials — stored secrets are redacted by the endpoint.","calculated_at":"2026-09-20T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"description":{"type":"string","description":"The application to add, e.g. 'the official Atlassian MCP server for Jira and Confluence'."},"url":{"type":"string","description":"Optional MCP endpoint, docs page, or homepage to anchor the draft."}},"required":["description"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/connectors/generate","method":"POST","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","body":"{\n \"description\": arguments.description,\n \"url\": arguments.url\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Discover Catalog Connector Tools","description":"Connect to an MCP connector's server and list its real tools. Pass a credential to authenticate; it is used for this one request and never stored.\n\nReturns the tool list rather than saving it: connector definitions live in mcp-s-db-service/src/connectors, so the result is what gets committed as the connector's tools file. Curation already in the committed file — disabled flags, risk scores, labels — is preserved. Only works for connectors of kind 'mcp'.","slug":"discover_catalog_connector_tools","ai_risk":{"level":"medium","score":5,"reasoning":"Reaches a third-party provider with a supplied credential, or spends an AI call. Nothing is stored — the result comes back to be committed.","calculated_at":"2026-09-20T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"The connector slug."},"credential_type":{"type":"string","enum":["none","bearer","header","basic","query"],"description":"How to authenticate to the MCP server."},"token":{"type":"string","description":"Bearer token, when credential_type is 'bearer'."},"header_name":{"type":"string","description":"Header or query parameter name, for credential_type 'header' or 'query'."},"header_value":{"type":"string","description":"Header or query parameter value, for credential_type 'header' or 'query'."}},"required":["slug"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/connectors/{slug}/discover-tools","method":"POST","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"slug\": arguments.slug\n }","body":"{\n \"credential\": arguments.credential_type = \"bearer\" ? {\n \"type\": \"bearer\",\n \"token\": arguments.token\n } : arguments.credential_type = \"header\" ? {\n \"type\": \"header\",\n \"name\": arguments.header_name,\n \"value\": arguments.header_value\n } : arguments.credential_type = \"query\" ? {\n \"type\": \"query\",\n \"name\": arguments.header_name,\n \"value\": arguments.header_value\n } : {\n \"type\": \"none\"\n }\n }"}},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false}},{"name":"Verify Catalog Connector","description":"Run the connector's verification probe with a credential to confirm the connection actually works. For an MCP connector this performs the handshake and lists tools; for an API connector it calls the configured endpoint and reports the status, which account the credential belongs to, and a truncated response body.\n\nA failing provider response (a 401, say) comes back as ok:false rather than an error. The credential is used for this request only and never stored.","slug":"verify_catalog_connector","ai_risk":{"level":"low","score":1,"reasoning":"Reads platform connector definitions. No customer data and no credentials — stored secrets are redacted by the endpoint.","calculated_at":"2026-09-20T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"The connector slug."},"credential_type":{"type":"string","enum":["none","bearer","header","basic","query"],"description":"How to authenticate."},"token":{"type":"string","description":"Bearer token, when credential_type is 'bearer'."},"header_name":{"type":"string","description":"Header or query parameter name."},"header_value":{"type":"string","description":"Header or query parameter value."}},"required":["slug"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/connectors/{slug}/verify","method":"POST","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"slug\": arguments.slug\n }","body":"{\n \"credential\": arguments.credential_type = \"bearer\" ? {\n \"type\": \"bearer\",\n \"token\": arguments.token\n } : arguments.credential_type = \"header\" ? {\n \"type\": \"header\",\n \"name\": arguments.header_name,\n \"value\": arguments.header_value\n } : arguments.credential_type = \"query\" ? {\n \"type\": \"query\",\n \"name\": arguments.header_name,\n \"value\": arguments.header_value\n } : {\n \"type\": \"none\"\n }\n }"}},"annotations":{"readOnlyHint":false,"idempotentHint":true,"destructiveHint":false}},{"name":"Assess Catalog Connector Tool Risk","description":"Score every tool on this connector for risk with AI, returning an `ai_risk` (level, score 1-10, and reasoning) per tool. Run it after pulling tools from an MCP server — a freshly discovered tool has no assessment, and the risk shown for a connector is a rollup of its tools.\n\nRisk is per tool, not per connector: 'search issues' and 'delete project' on the same server are not the same danger. The assessments are returned for committing into the connector's tools file, not saved.","slug":"assess_catalog_connector_tool_risk","ai_risk":{"level":"medium","score":5,"reasoning":"Reaches a third-party provider with a supplied credential, or spends an AI call. Nothing is stored — the result comes back to be committed.","calculated_at":"2026-09-20T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"The connector slug."},"only_missing":{"type":"boolean","description":"Only score tools that have no assessment yet. Defaults to true; set false to re-score everything."}},"required":["slug"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/connectors/{slug}/assess-tools","method":"POST","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"slug\": arguments.slug\n }","body":"{\n \"only_missing\": arguments.only_missing\n }"}},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false}},{"name":"List Instant OAuth Apps","description":"List Willow's Instant OAuth apps (super admin): connector slug, host, client id, scopes, callback URL, label, and whether a client secret is stored.\n\nEach row is one OAuth app for one connector slug. A connector offers Instant OAuth only when it has a default row (host ''). A row with a non-empty host is a per-host app, keyed by hostname (e.g. a GitHub Enterprise host). These rows apply to catalog connectors; built-in connectors keep the webrix-oauth block in their own definition. Changes reach every db-service pod within about a minute. On-prem deployments ignore this table.","slug":"list_instant_connectors","ai_risk":{"level":"low","score":1,"reasoning":"Reads Willow's Instant OAuth app records. Client secrets are never returned, only whether one is stored.","calculated_at":"2026-10-08T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"Only apps for this connector slug."}},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/instant-connectors","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"slug\": arguments.slug\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Instant OAuth App","description":"Read one Instant OAuth app by id (super admin). The client secret is not returned; has_client_secret says whether one is stored.\n\nEach row is one OAuth app for one connector slug. A connector offers Instant OAuth only when it has a default row (host ''). A row with a non-empty host is a per-host app, keyed by hostname (e.g. a GitHub Enterprise host). These rows apply to catalog connectors; built-in connectors keep the webrix-oauth block in their own definition. Changes reach every db-service pod within about a minute. On-prem deployments ignore this table.","slug":"get_instant_connector","ai_risk":{"level":"low","score":1,"reasoning":"Reads Willow's Instant OAuth app records. Client secrets are never returned, only whether one is stored.","calculated_at":"2026-10-08T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"The Instant OAuth app id."}},"required":["id"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/instant-connectors/{id}","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"id\": arguments.id\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Create Instant OAuth App","description":"Add an Instant OAuth app for a catalog connector (super admin). Fails with a conflict if the connector already has an app for that host; use Update Instant OAuth App instead.\n\nEach row is one OAuth app for one connector slug. A connector offers Instant OAuth only when it has a default row (host ''). A row with a non-empty host is a per-host app, keyed by hostname (e.g. a GitHub Enterprise host). These rows apply to catalog connectors; built-in connectors keep the webrix-oauth block in their own definition. Changes reach every db-service pod within about a minute. On-prem deployments ignore this table.","slug":"create_instant_connector","ai_risk":{"level":"medium","score":5,"reasoning":"Changes the OAuth app that catalog connectors use for Instant OAuth. A wrong client id, secret or scope breaks sign-in for every flagged org on that connector.","calculated_at":"2026-10-08T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"connector_slug":{"type":"string","description":"The catalog connector slug this app belongs to (e.g. 'github', 'gmail')."},"host":{"type":"string","description":"Empty or omitted for the connector's default app; a hostname (e.g. 'github.acme.com') for a per-host app."},"client_id":{"type":"string","description":"The OAuth client id."},"client_secret":{"type":"string","description":"The OAuth client secret in plain text. It is encrypted before it is stored and is never returned."},"scopes":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request. Omit to use the connector's default scopes."},"callback_url":{"type":"string","description":"Redirect URI registered on the OAuth app, when it differs from Willow's default."},"label":{"type":"string","description":"Display label for the app, e.g. 'Willow (GitHub Enterprise)'."}},"required":["connector_slug","client_id"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/instant-connectors","method":"POST","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","body":"{\n \"connector_slug\": arguments.connector_slug,\n \"host\": arguments.host,\n \"client_id\": arguments.client_id,\n \"client_secret\": arguments.client_secret,\n \"scopes\": arguments.scopes,\n \"callback_url\": arguments.callback_url,\n \"label\": arguments.label\n }"}},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false}},{"name":"Update Instant OAuth App","description":"Change an Instant OAuth app (super admin). Only the fields you pass are changed. Omit client_secret to keep the stored secret, or pass a new one to rotate it. Pass an empty scopes list or an empty string for callback_url or label to clear them.\n\nEach row is one OAuth app for one connector slug. A connector offers Instant OAuth only when it has a default row (host ''). A row with a non-empty host is a per-host app, keyed by hostname (e.g. a GitHub Enterprise host). These rows apply to catalog connectors; built-in connectors keep the webrix-oauth block in their own definition. Changes reach every db-service pod within about a minute. On-prem deployments ignore this table.","slug":"update_instant_connector","ai_risk":{"level":"medium","score":5,"reasoning":"Changes the OAuth app that catalog connectors use for Instant OAuth. A wrong client id, secret or scope breaks sign-in for every flagged org on that connector.","calculated_at":"2026-10-08T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"The Instant OAuth app id."},"connector_slug":{"type":"string","description":"The catalog connector slug this app belongs to (e.g. 'github', 'gmail')."},"host":{"type":"string","description":"Empty or omitted for the connector's default app; a hostname (e.g. 'github.acme.com') for a per-host app."},"client_id":{"type":"string","description":"The OAuth client id."},"client_secret":{"type":"string","description":"The OAuth client secret in plain text. It is encrypted before it is stored and is never returned."},"scopes":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request. Omit to use the connector's default scopes."},"callback_url":{"type":"string","description":"Redirect URI registered on the OAuth app, when it differs from Willow's default."},"label":{"type":"string","description":"Display label for the app, e.g. 'Willow (GitHub Enterprise)'."}},"required":["id"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/instant-connectors/{id}","method":"PATCH","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"id\": arguments.id\n }","body":"{\n \"connector_slug\": arguments.connector_slug,\n \"host\": arguments.host,\n \"client_id\": arguments.client_id,\n \"client_secret\": arguments.client_secret,\n \"scopes\": arguments.scopes,\n \"callback_url\": arguments.callback_url,\n \"label\": arguments.label\n }"}},"annotations":{"readOnlyHint":false,"idempotentHint":true,"destructiveHint":false}},{"name":"Delete Instant OAuth App","description":"Delete an Instant OAuth app (super admin). Deleting a connector's default app (host '') removes Instant OAuth from that connector for every flagged org, and token refresh for connections made through it can fail.\n\nEach row is one OAuth app for one connector slug. A connector offers Instant OAuth only when it has a default row (host ''). A row with a non-empty host is a per-host app, keyed by hostname (e.g. a GitHub Enterprise host). These rows apply to catalog connectors; built-in connectors keep the webrix-oauth block in their own definition. Changes reach every db-service pod within about a minute. On-prem deployments ignore this table.","slug":"delete_instant_connector","ai_risk":{"level":"high","score":8,"reasoning":"Deletes an Instant OAuth app. Removing a connector's default app takes Instant OAuth away from that connector for every flagged org.","calculated_at":"2026-10-08T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"The Instant OAuth app id."}},"required":["id"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/instant-connectors/{id}","method":"DELETE","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"id\": arguments.id\n }"}},"annotations":{"readOnlyHint":false,"idempotentHint":true,"destructiveHint":true}}]}}
1
+ {"id":"super-admin","status":"super-admin","internal_status":"tool-works","definition":{"display":{"name":"Willow Super Admin","description":"Cross-organization super-admin operations for Willow: browse organizations, growth and POV activity, an org's configured MCP servers, support access, MCP health, and AI-risk migration status; cross-org analytics (WQL → JSON) and dashboards; plus the connector catalog — draft a connector from a description, pull its tools off the live MCP server, verify a credential, then snapshot, test on chosen MCP servers, and release. Access is restricted to Willow super admins.","icon":"willow-admin.svg","category":"other","docs_url":"https://docs.withwillow.ai/api/webrix-api"},"configuration":{"type":"object","properties":{"webrixAdminUrl":{"type":"string","title":"Willow Admin URL"}},"required":["webrixAdminUrl"]},"api":{"base_url":""},"auth":{"methods":{"proxy-passthrough":{}}},"tools":[{"name":"List Organizations","description":"List Willow organizations across the whole platform (super admin), with pagination, search and filters. Each org is enriched with its admins and usage stats (integrations, skills, users, tool calls over the last 30 days, last use).","slug":"list_organizations","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"search":{"type":"string","description":"Search term to filter organizations by name, slug or admin email."},"setup":{"type":"string","description":"Filter by POV/setup state (e.g. a setup step or 'configured'). Optional."},"premium":{"type":"string","description":"Filter by premium status. Pass 'true' or 'false' to only include premium / non-premium orgs."},"limit":{"type":"number","description":"Maximum number of organizations to return (default 20)."},"skip":{"type":"number","description":"Number of organizations to skip for pagination (default 0)."}},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/organizations","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"search\": arguments.search,\n \"setup\": arguments.setup,\n \"premium\": arguments.premium,\n \"limit\": arguments.limit,\n \"skip\": arguments.skip,\n \"enrich\": \"true\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Search Organizations","description":"Lightweight organization search (super admin). Returns only id, name and slug for each match — useful for quickly resolving an organization id before calling other tools.","slug":"search_organizations","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"search":{"type":"string","description":"Search term (name / slug / admin email)."},"limit":{"type":"number","description":"Maximum number of results to return (default 25, max 100)."},"skip":{"type":"number","description":"Number of results to skip for pagination (default 0)."}},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/organizations/search","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"search\": arguments.search,\n \"limit\": arguments.limit,\n \"skip\": arguments.skip\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Identify Id","description":"Resolve raw ids to what they actually are (super admin). Pass one id or a comma-separated batch and each is matched against organizations, users, admins and background agents platform-wide; matches come back with the name, the email (users and admins), the owning organization id/name/slug, the creation time and a few type-specific details (org status and premium, whether a user is a machine user, an admin's role, an agent's slug and status). Ids that match nothing are listed under 'unresolved'.\n\nUse this first whenever a question hands you a bare id — from an audit log row, an alert, a support ticket or a URL — and you do not yet know whether it is an org, a person or an agent, or which org it belongs to. Search Organizations only matches names, slugs and admin emails, so it will never find an id.\n\nOnly accepts uuids, and at most 25 per call.","slug":"identify_id","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"ids":{"type":"string","description":"One id, or a comma-separated list of up to 25 ids, to resolve."}},"required":["ids"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/identify","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"ids\": arguments.ids\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Organization Growth","description":"Get platform-wide new-organization counts bucketed daily, weekly and monthly (super admin). Useful for tracking signup / growth trends.","slug":"get_organization_growth","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/organizations/new-counts","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Organization POV Activity","description":"Get a 7-day activity snapshot for one or more organizations (super admin): tool calls, active users, admin actions, new connections and the all-time last-use timestamp. Pass a single organization id, or a comma-separated list to fetch several at once.","slug":"get_organization_pov_activity","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"orgId":{"type":"string","description":"A single organization id. Returns a flat activity object. Use this OR orgIds."},"orgIds":{"type":"string","description":"Comma-separated list of organization ids. Returns a map of orgId -> activity. Use this OR orgId."}},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/organizations/pov-activity","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"orgId\": arguments.orgId,\n \"orgIds\": arguments.orgIds\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Organization Setup Status","description":"Get a target organization's POV setup configuration together with live per-step auto-detection (super admin). Requires the organization id.","slug":"get_organization_setup_status","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"orgId":{"type":"string","description":"The organization id to inspect."}},"required":["orgId"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/organizations/setup-status","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"orgId\": arguments.orgId\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Organization MCP Servers","description":"List the MCP servers (integrations) configured in one organization, with their stored configuration (super admin). Each row includes the display name and slug, the connector it was created from, active/draft status and whether it is disabled, the proxy target for remote MCPs, and the request settings (base URL, header names, timeouts, response caps, proxy sync flags). Requires the organization id — use Search Organizations first to resolve it.\n\nCredentials are redacted: auth_settings is reduced to its authType, and header and settings values come back as '[redacted]'. The mcp_proxy config keeps its shape (URL host and path, command) but every header and env value, URL userinfo and query value, auth token and secret command-line arg is '[redacted]'; {{vault.*}} placeholders are kept. The per-tool list is not included.","slug":"get_organization_mcp_servers","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"orgId":{"type":"string","description":"The organization id whose MCP servers to list."}},"required":["orgId"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/integrations","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"org_id\": arguments.orgId,\n \"redact\": \"true\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Organization Audit Logs","description":"Read a specific organization's runtime audit logs (super admin): tool calls, gateway inits, connects, webhooks, guard checks and connector auth events, newest first. Requires the organization id — use Search Organizations first to resolve it.\n\nIMPORTANT — this query scans the org's entire audit-log history and can be very expensive. ALWAYS narrow it as much as you possibly can: keep the time window short (it defaults to the last 24 hours) and pass every filter you already know (action, mcpServer, success, userId, mcpClient). Never widen the date range or raise the limit just to 'see more' — instead add filters, and page with skip only when you genuinely need the next page. Start with the default limit of 10 and increase only if the answer truly requires it.\n\nTool arguments and responses are stripped from the returned rows, so this shows which calls happened, by whom, and whether they succeeded — not the customer data they carried.","slug":"get_organization_audit_logs","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"orgId":{"type":"string","description":"The organization id whose audit logs to read."},"start_date":{"type":"string","description":"Start of the window, ISO 8601 timestamp (inclusive). Defaults to 24 hours ago. Keep the window as narrow as the question allows."},"end_date":{"type":"string","description":"End of the window, ISO 8601 timestamp (inclusive). Defaults to now."},"limit":{"type":"number","description":"Number of log rows to return (default 10, maximum 100). Values above 100 are clamped to 100."},"skip":{"type":"number","description":"Number of rows to skip for pagination (default 0). The response's pagination.hasMore tells you whether another page exists."},"action":{"type":"string","description":"Filter by action type, or a comma-separated list. Common values: 'tool_call', 'init', 'connect', 'webhook', 'guard_check', 'connector_auth', 'get_prompt', 'add_skill'. Strongly recommended — most questions only concern one action type."},"mcpServer":{"type":"string","description":"Filter by MCP server / integration slug (e.g. 'github', 'slack'). Note slugs are only unique within an organization."},"status":{"type":"string","description":"Filter tool-call outcome: 'true' for successes only, 'false' for failures only. Omit for both."},"userId":{"type":"string","description":"Filter by the acting user or background-agent id. Filtering by email is not supported — each returned row includes the user's email and name, so read them off the results."},"mcpClient":{"type":"string","description":"Filter by AI client slug (e.g. 'cursor', 'claude', 'vscode')."},"tool":{"type":"string","description":"Filter by exact tool slug within an MCP server. Use together with mcpServer."}},"required":["orgId"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/organizations/audit-logs","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"orgId\": arguments.orgId,\n \"start_date\": arguments.start_date,\n \"end_date\": arguments.end_date,\n \"limit\": arguments.limit,\n \"skip\": arguments.skip,\n \"action\": arguments.action,\n \"tool_call_mcp\": arguments.mcpServer,\n \"tool_call_success\": arguments.status,\n \"user_id\": arguments.userId,\n \"mcp_client\": arguments.mcpClient,\n \"tool_call_tool\": arguments.tool\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"List Support Access","description":"List every organization that currently has Willow support access enabled — i.e. the shared support identity is one of its admins (super admin). Returns each org's id and name.","slug":"list_support_access","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/support-access","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Risk Migration Status","description":"Get counts of assets missing AI-risk or policy metadata across the platform (super admin): skills, toolkits and integration tools that still need an AI-risk level and/or policy check.","slug":"get_risk_migration_status","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin reporting endpoint that returns organization metadata or activity records; it performs no mutations.","calculated_at":"2026-07-26T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/risk-migration","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Super Admin Analytics Guide","description":"Return the how-to guide for cross-org analytics over Willow Super Admin MCP: recommended agent flow (guide → generate or write WQL → run → JSON), Willow Query Language grammar, org-scoping with the `org` field, and dashboard payload examples. Call this before generate_super_admin_analytics_query or run_super_admin_analytics. Read-only.","slug":"get_super_admin_analytics_guide","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin cross-org analytics endpoint; it does not mutate telemetry or org configuration.","calculated_at":"2026-10-21T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/analytics/guide","method":"GET","responseType":"text","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Super Admin Analytics Catalog","description":"Return the cross-org analytics catalog: datasets, dimensions (including `org`), metrics, filters, metric functions, and query templates. Use these names when writing WQL or interpreting generate_super_admin_analytics_query output. Read-only.","slug":"get_super_admin_analytics_catalog","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin cross-org analytics endpoint; it does not mutate telemetry or org configuration.","calculated_at":"2026-10-21T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/analytics/catalog","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Generate Super Admin Analytics Query","description":"Turn a natural-language cross-org analytics question into a validated Willow Query Language (WQL) statement and compiled query spec (same AI flow as Super Admin → Dashboards). Call get_super_admin_analytics_guide first. Pass the returned wql to run_super_admin_analytics to get JSON results. Requires the platform OpenAI key. Read-only.","slug":"generate_super_admin_analytics_query","ai_risk":{"level":"low","score":2,"reasoning":"This tool only generates a cross-org query; it does not run it or mutate data.","calculated_at":"2026-10-21T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"description":{"type":"string","description":"Plain-English question, e.g. \"tool calls by organization over the last 7 days\""},"current_query":{"type":"string","description":"Optional existing WQL to refine instead of replacing from scratch"}},"required":["description"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/analytics/ai-generate","method":"POST","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","body":"{\n \"description\": arguments.description,\n \"currentQuery\": arguments.current_query\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Run Super Admin Analytics","description":"Run a cross-org analytics query (WQL string or compiled spec) against platform telemetry and return JSON (columns, rows, meta). Same engine as Super Admin dashboards. Set format=csv for spreadsheet text. Prefer generate_super_admin_analytics_query for natural-language questions. Call get_super_admin_analytics_guide for grammar, workflow, and org scoping. Read-only.","slug":"run_super_admin_analytics","ai_risk":{"level":"low","score":2,"reasoning":"This tool runs a catalog-constrained cross-org analytics query and returns JSON; it does not mutate data.","calculated_at":"2026-10-21T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"wql":{"type":"string","description":"Willow Query Language statement to run (preferred). Example: tool_calls | count by org from -7d to now as bar"},"spec":{"type":"object","description":"Compiled query spec from generate_super_admin_analytics_query. Use when you already have the spec object instead of WQL.","additionalProperties":true},"format":{"type":"string","enum":["json","csv"],"description":"Response format. Defaults to json (best for agents). Use csv for spreadsheet export."}},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/analytics/query","method":"POST","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","body":"{\n \"wql\": arguments.wql,\n \"spec\": arguments.spec,\n \"format\": arguments.format ? arguments.format : \"json\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"List Super Admin Dashboards","description":"List saved cross-org analytics dashboards. Each item includes an absolute `url` to open in Super Admin → Dashboards. Read-only.","slug":"list_super_admin_dashboards","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin cross-org analytics endpoint; it does not mutate telemetry or org configuration.","calculated_at":"2026-10-21T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"search":{"type":"string","description":"Optional title search filter"},"cursor":{"type":"number","description":"Zero-based cursor offset for pagination (default: 0)"},"limit":{"type":"number","description":"Maximum number of dashboards to return (default: 100)"}},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/dashboards","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"search\": arguments.search,\n \"cursor\": arguments.cursor,\n \"limit\": arguments.limit\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Super Admin Dashboard","description":"Fetch a single cross-org analytics dashboard by id, including layout visuals and an absolute `url` for the super-admin UI. Read-only.","slug":"get_super_admin_dashboard","ai_risk":{"level":"low","score":1,"reasoning":"Read-only super-admin cross-org analytics endpoint; it does not mutate telemetry or org configuration.","calculated_at":"2026-10-21T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Dashboard id returned by create_super_admin_dashboard or list_super_admin_dashboards"}},"required":["id"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/dashboards/{id}","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"id\": arguments.id\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Create Super Admin Dashboard","description":"Create a cross-org analytics dashboard (same as Super Admin → Dashboards). Pass title and optional layout visuals; each visual needs title plus wql or spec (from generate_super_admin_analytics_query). Returns { data, url } — open url in the super-admin UI. Call get_super_admin_analytics_guide for the payload shape.","slug":"create_super_admin_dashboard","ai_risk":{"level":"low","score":4,"reasoning":"Creates or updates a saved cross-org analytics dashboard via standard CRUD; it does not mutate telemetry.","calculated_at":"2026-10-21T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Dashboard title"},"description":{"type":"string","description":"Optional dashboard description"},"layout":{"type":"array","description":"Visuals to place on the dashboard. Each item needs title plus wql or spec. w is column span (1=half, 2=full).","items":{"type":"object","properties":{"id":{"type":"string","description":"Optional visual id (auto-generated if omitted)"},"title":{"type":"string","description":"Visual title"},"description":{"type":"string","description":"Optional visual description"},"wql":{"type":"string","description":"Willow Query Language for this visual (preferred). Compiled server-side when spec is omitted."},"spec":{"type":"object","description":"Compiled query spec from generate_super_admin_analytics_query. Use instead of wql when you already have the object.","additionalProperties":true},"w":{"type":"number","enum":[1,2],"description":"Column span: 1 = half width, 2 = full width (default 1)"},"h":{"type":"number","description":"Optional row-height multiplier"}},"required":["title"],"additionalProperties":false}},"filters":{"type":"object","description":"Optional shared dashboard filters (time preset and field variables).","additionalProperties":true}},"required":["title"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/dashboards","method":"POST","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","body":"{\n \"title\": arguments.title,\n \"description\": arguments.description,\n \"layout\": arguments.layout,\n \"filters\": arguments.filters\n }"}},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false}},{"name":"Update Super Admin Dashboard","description":"Update an existing cross-org analytics dashboard by id. Only provided fields change; layout fully replaces the current visuals when set. Each visual needs title plus wql or spec. Returns { data, url }.","slug":"update_super_admin_dashboard","ai_risk":{"level":"low","score":4,"reasoning":"Creates or updates a saved cross-org analytics dashboard via standard CRUD; it does not mutate telemetry.","calculated_at":"2026-10-21T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Dashboard id to update"},"title":{"type":"string","description":"New dashboard title"},"description":{"type":"string","description":"New dashboard description (pass empty string to clear)"},"layout":{"type":"array","description":"Full replacement layout. Each visual needs title plus wql or spec.","items":{"type":"object","properties":{"id":{"type":"string","description":"Visual id — reuse existing ids when editing, or omit to create new visuals"},"title":{"type":"string","description":"Visual title"},"description":{"type":"string","description":"Optional visual description"},"wql":{"type":"string","description":"Willow Query Language for this visual (preferred). Compiled server-side when spec is omitted."},"spec":{"type":"object","description":"Compiled query spec from generate_super_admin_analytics_query. Use instead of wql when you already have the object.","additionalProperties":true},"w":{"type":"number","enum":[1,2],"description":"Column span: 1 = half width, 2 = full width (default 1)"},"h":{"type":"number","description":"Optional row-height multiplier"}},"required":["title"],"additionalProperties":false}},"filters":{"type":"object","description":"Replacement shared dashboard filters","additionalProperties":true}},"required":["id"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/dashboards/{id}","method":"PATCH","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"id\": arguments.id\n }","body":"{\n \"title\": arguments.title,\n \"description\": arguments.description,\n \"layout\": arguments.layout,\n \"filters\": arguments.filters\n }"}},"annotations":{"readOnlyHint":false,"idempotentHint":true,"destructiveHint":false}},{"name":"List Catalog Connectors","description":"List the connectors in the platform catalog (super admin). Each entry carries its slug, kind ('mcp' for a proxied MCP server, 'api' for a REST connector), catalog status, the applications it covers (e.g. ['jira','confluence']), the released version, the risk score, and how many organizations have installed it.\n\nOnly connectors authored in the newer catalog definition shape are listed; the older hand-written connector objects are not.","slug":"list_catalog_connectors","ai_risk":{"level":"low","score":1,"reasoning":"Reads platform connector definitions. No customer data and no credentials — stored secrets are redacted by the endpoint.","calculated_at":"2026-09-20T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"search":{"type":"string","description":"Filter by name, slug, or application."},"kind":{"type":"string","enum":["mcp","api"],"description":"Only connectors of this kind."},"status":{"type":"string","description":"Comma-separated catalog statuses: draft, soon, beta, active, super-admin, hidden."},"application":{"type":"string","description":"Comma-separated product names; matches a connector covering any of them."}},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/connectors","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"search\": arguments.search,\n \"kind\": arguments.kind,\n \"status\": arguments.status,\n \"application\": arguments.application\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Catalog Connector","description":"Read one catalog connector in full (super admin): display metadata, endpoint, auth methods and default OAuth scopes, the verification probe, the published tool list, webhook triggers, risk score, and the integration template with its per-field inheritance modes.\n\nThis returns the working copy — the version organizations resolve is `released_version`. Stored client secrets are replaced with a `hasClientSecret` flag.","slug":"get_catalog_connector","ai_risk":{"level":"low","score":1,"reasoning":"Reads platform connector definitions. No customer data and no credentials — stored secrets are redacted by the endpoint.","calculated_at":"2026-09-20T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"The connector slug."}},"required":["slug"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/connectors/{slug}","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"slug\": arguments.slug\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Catalog Connector Template","description":"Show the MCP server an organization would get if it installed this connector right now, field by field, plus the connector's setup instructions. Every field is inherited from the connector until the organization edits it; `locked` fields cannot be overridden at all. Use this to check a connector before releasing it.","slug":"get_catalog_connector_template","ai_risk":{"level":"low","score":1,"reasoning":"Reads platform connector definitions. No customer data and no credentials — stored secrets are redacted by the endpoint.","calculated_at":"2026-09-20T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"The connector slug."}},"required":["slug"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/connectors/{slug}/template","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"slug\": arguments.slug\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Catalog Connector Usage","description":"List the organizations running an MCP server on this catalog connector, with how many they have each and when they last installed one. Check this before releasing a version or deleting a connector.","slug":"get_catalog_connector_usage","ai_risk":{"level":"low","score":1,"reasoning":"Reads platform connector definitions. No customer data and no credentials — stored secrets are redacted by the endpoint.","calculated_at":"2026-09-20T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"The connector slug."}},"required":["slug"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/connectors/{slug}/usage","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"slug\": arguments.slug\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Draft Catalog Connector","description":"Draft a connector from a plain-language description of an application, without saving anything. Returns the proposed slug, kind, applications and definition — endpoint, auth methods, default OAuth scopes, category and verification probe — together with a confidence level and the assumptions it made.\n\nStart here when adding an unfamiliar application: read the assumptions and correct what is wrong, then commit the definition as src/connectors/<slug>/<slug>.connector.ts in the webrix-ai/connectors repository and add it to src/connectors/index.ts there. Tools are never drafted; pull them from the server with Discover Catalog Connector Tools instead.","slug":"draft_catalog_connector","ai_risk":{"level":"low","score":1,"reasoning":"Reads platform connector definitions. No customer data and no credentials — stored secrets are redacted by the endpoint.","calculated_at":"2026-09-20T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"description":{"type":"string","description":"The application to add, e.g. 'the official Atlassian MCP server for Jira and Confluence'."},"url":{"type":"string","description":"Optional MCP endpoint, docs page, or homepage to anchor the draft."}},"required":["description"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/connectors/generate","method":"POST","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","body":"{\n \"description\": arguments.description,\n \"url\": arguments.url\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Discover Catalog Connector Tools","description":"Connect to an MCP connector's server and list its real tools. Pass a credential to authenticate; it is used for this one request and never stored.\n\nReturns the tool list rather than saving it: connector definitions live in mcp-s-db-service/src/connectors, so the result is what gets committed as the connector's tools file. Curation already in the committed file — disabled flags, risk scores, labels — is preserved. Only works for connectors of kind 'mcp'.","slug":"discover_catalog_connector_tools","ai_risk":{"level":"medium","score":5,"reasoning":"Reaches a third-party provider with a supplied credential, or spends an AI call. Nothing is stored — the result comes back to be committed.","calculated_at":"2026-09-20T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"The connector slug."},"credential_type":{"type":"string","enum":["none","bearer","header","basic","query"],"description":"How to authenticate to the MCP server."},"token":{"type":"string","description":"Bearer token, when credential_type is 'bearer'."},"header_name":{"type":"string","description":"Header or query parameter name, for credential_type 'header' or 'query'."},"header_value":{"type":"string","description":"Header or query parameter value, for credential_type 'header' or 'query'."}},"required":["slug"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/connectors/{slug}/discover-tools","method":"POST","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"slug\": arguments.slug\n }","body":"{\n \"credential\": arguments.credential_type = \"bearer\" ? {\n \"type\": \"bearer\",\n \"token\": arguments.token\n } : arguments.credential_type = \"header\" ? {\n \"type\": \"header\",\n \"name\": arguments.header_name,\n \"value\": arguments.header_value\n } : arguments.credential_type = \"query\" ? {\n \"type\": \"query\",\n \"name\": arguments.header_name,\n \"value\": arguments.header_value\n } : {\n \"type\": \"none\"\n }\n }"}},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false}},{"name":"Verify Catalog Connector","description":"Run the connector's verification probe with a credential to confirm the connection actually works. For an MCP connector this performs the handshake and lists tools; for an API connector it calls the configured endpoint and reports the status, which account the credential belongs to, and a truncated response body.\n\nA failing provider response (a 401, say) comes back as ok:false rather than an error. The credential is used for this request only and never stored.","slug":"verify_catalog_connector","ai_risk":{"level":"low","score":1,"reasoning":"Reads platform connector definitions. No customer data and no credentials — stored secrets are redacted by the endpoint.","calculated_at":"2026-09-20T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"The connector slug."},"credential_type":{"type":"string","enum":["none","bearer","header","basic","query"],"description":"How to authenticate."},"token":{"type":"string","description":"Bearer token, when credential_type is 'bearer'."},"header_name":{"type":"string","description":"Header or query parameter name."},"header_value":{"type":"string","description":"Header or query parameter value."}},"required":["slug"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/connectors/{slug}/verify","method":"POST","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"slug\": arguments.slug\n }","body":"{\n \"credential\": arguments.credential_type = \"bearer\" ? {\n \"type\": \"bearer\",\n \"token\": arguments.token\n } : arguments.credential_type = \"header\" ? {\n \"type\": \"header\",\n \"name\": arguments.header_name,\n \"value\": arguments.header_value\n } : arguments.credential_type = \"query\" ? {\n \"type\": \"query\",\n \"name\": arguments.header_name,\n \"value\": arguments.header_value\n } : {\n \"type\": \"none\"\n }\n }"}},"annotations":{"readOnlyHint":false,"idempotentHint":true,"destructiveHint":false}},{"name":"Assess Catalog Connector Tool Risk","description":"Score every tool on this connector for risk with AI, returning an `ai_risk` (level, score 1-10, and reasoning) per tool. Run it after pulling tools from an MCP server — a freshly discovered tool has no assessment, and the risk shown for a connector is a rollup of its tools.\n\nRisk is per tool, not per connector: 'search issues' and 'delete project' on the same server are not the same danger. The assessments are returned for committing into the connector's tools file, not saved.","slug":"assess_catalog_connector_tool_risk","ai_risk":{"level":"medium","score":5,"reasoning":"Reaches a third-party provider with a supplied credential, or spends an AI call. Nothing is stored — the result comes back to be committed.","calculated_at":"2026-09-20T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"The connector slug."},"only_missing":{"type":"boolean","description":"Only score tools that have no assessment yet. Defaults to true; set false to re-score everything."}},"required":["slug"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/connectors/{slug}/assess-tools","method":"POST","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"slug\": arguments.slug\n }","body":"{\n \"only_missing\": arguments.only_missing\n }"}},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false}},{"name":"List Instant OAuth Apps","description":"List Willow's Instant OAuth apps (super admin): connector slug, host, client id, scopes, callback URL, label, and whether a client secret is stored.\n\nEach row is one OAuth app for one connector slug. A connector offers Instant OAuth only when it has a default row (host ''). A row with a non-empty host is a per-host app, keyed by hostname (e.g. a GitHub Enterprise host). These rows apply to catalog connectors; built-in connectors keep the webrix-oauth block in their own definition. Changes reach every db-service pod within about a minute. On-prem deployments ignore this table.","slug":"list_instant_connectors","ai_risk":{"level":"low","score":1,"reasoning":"Reads Willow's Instant OAuth app records. Client secrets are never returned, only whether one is stored.","calculated_at":"2026-10-08T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"Only apps for this connector slug."}},"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/instant-connectors","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","query":"{\n \"slug\": arguments.slug\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Get Instant OAuth App","description":"Read one Instant OAuth app by id (super admin). The client secret is not returned; has_client_secret says whether one is stored.\n\nEach row is one OAuth app for one connector slug. A connector offers Instant OAuth only when it has a default row (host ''). A row with a non-empty host is a per-host app, keyed by hostname (e.g. a GitHub Enterprise host). These rows apply to catalog connectors; built-in connectors keep the webrix-oauth block in their own definition. Changes reach every db-service pod within about a minute. On-prem deployments ignore this table.","slug":"get_instant_connector","ai_risk":{"level":"low","score":1,"reasoning":"Reads Willow's Instant OAuth app records. Client secrets are never returned, only whether one is stored.","calculated_at":"2026-10-08T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"The Instant OAuth app id."}},"required":["id"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/instant-connectors/{id}","method":"GET","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"id\": arguments.id\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false}},{"name":"Create Instant OAuth App","description":"Add an Instant OAuth app for a catalog connector (super admin). Fails with a conflict if the connector already has an app for that host; use Update Instant OAuth App instead.\n\nEach row is one OAuth app for one connector slug. A connector offers Instant OAuth only when it has a default row (host ''). A row with a non-empty host is a per-host app, keyed by hostname (e.g. a GitHub Enterprise host). These rows apply to catalog connectors; built-in connectors keep the webrix-oauth block in their own definition. Changes reach every db-service pod within about a minute. On-prem deployments ignore this table.","slug":"create_instant_connector","ai_risk":{"level":"medium","score":5,"reasoning":"Changes the OAuth app that catalog connectors use for Instant OAuth. A wrong client id, secret or scope breaks sign-in for every flagged org on that connector.","calculated_at":"2026-10-08T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"connector_slug":{"type":"string","description":"The catalog connector slug this app belongs to (e.g. 'github', 'gmail')."},"host":{"type":"string","description":"Empty or omitted for the connector's default app; a hostname (e.g. 'github.acme.com') for a per-host app."},"client_id":{"type":"string","description":"The OAuth client id."},"client_secret":{"type":"string","description":"The OAuth client secret in plain text. It is encrypted before it is stored and is never returned."},"scopes":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request. Omit to use the connector's default scopes."},"callback_url":{"type":"string","description":"Redirect URI registered on the OAuth app, when it differs from Willow's default."},"label":{"type":"string","description":"Display label for the app, e.g. 'Willow (GitHub Enterprise)'."}},"required":["connector_slug","client_id"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/instant-connectors","method":"POST","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\"\n }","body":"{\n \"connector_slug\": arguments.connector_slug,\n \"host\": arguments.host,\n \"client_id\": arguments.client_id,\n \"client_secret\": arguments.client_secret,\n \"scopes\": arguments.scopes,\n \"callback_url\": arguments.callback_url,\n \"label\": arguments.label\n }"}},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false}},{"name":"Update Instant OAuth App","description":"Change an Instant OAuth app (super admin). Only the fields you pass are changed. Omit client_secret to keep the stored secret, or pass a new one to rotate it. Pass an empty scopes list or an empty string for callback_url or label to clear them.\n\nEach row is one OAuth app for one connector slug. A connector offers Instant OAuth only when it has a default row (host ''). A row with a non-empty host is a per-host app, keyed by hostname (e.g. a GitHub Enterprise host). These rows apply to catalog connectors; built-in connectors keep the webrix-oauth block in their own definition. Changes reach every db-service pod within about a minute. On-prem deployments ignore this table.","slug":"update_instant_connector","ai_risk":{"level":"medium","score":5,"reasoning":"Changes the OAuth app that catalog connectors use for Instant OAuth. A wrong client id, secret or scope breaks sign-in for every flagged org on that connector.","calculated_at":"2026-10-08T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"The Instant OAuth app id."},"connector_slug":{"type":"string","description":"The catalog connector slug this app belongs to (e.g. 'github', 'gmail')."},"host":{"type":"string","description":"Empty or omitted for the connector's default app; a hostname (e.g. 'github.acme.com') for a per-host app."},"client_id":{"type":"string","description":"The OAuth client id."},"client_secret":{"type":"string","description":"The OAuth client secret in plain text. It is encrypted before it is stored and is never returned."},"scopes":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request. Omit to use the connector's default scopes."},"callback_url":{"type":"string","description":"Redirect URI registered on the OAuth app, when it differs from Willow's default."},"label":{"type":"string","description":"Display label for the app, e.g. 'Willow (GitHub Enterprise)'."}},"required":["id"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/instant-connectors/{id}","method":"PATCH","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"id\": arguments.id\n }","body":"{\n \"connector_slug\": arguments.connector_slug,\n \"host\": arguments.host,\n \"client_id\": arguments.client_id,\n \"client_secret\": arguments.client_secret,\n \"scopes\": arguments.scopes,\n \"callback_url\": arguments.callback_url,\n \"label\": arguments.label\n }"}},"annotations":{"readOnlyHint":false,"idempotentHint":true,"destructiveHint":false}},{"name":"Delete Instant OAuth App","description":"Delete an Instant OAuth app (super admin). Deleting a connector's default app (host '') removes Instant OAuth from that connector for every flagged org, and token refresh for connections made through it can fail.\n\nEach row is one OAuth app for one connector slug. A connector offers Instant OAuth only when it has a default row (host ''). A row with a non-empty host is a per-host app, keyed by hostname (e.g. a GitHub Enterprise host). These rows apply to catalog connectors; built-in connectors keep the webrix-oauth block in their own definition. Changes reach every db-service pod within about a minute. On-prem deployments ignore this table.","slug":"delete_instant_connector","ai_risk":{"level":"high","score":8,"reasoning":"Deletes an Instant OAuth app. Removing a connector's default app takes Instant OAuth away from that connector for every flagged org.","calculated_at":"2026-10-08T00:00:00.000Z"},"enabled":true,"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"The Instant OAuth app id."}},"required":["id"],"additionalProperties":false},"action":{"path":"{webrixAdminUrl}/api/super-admin/instant-connectors/{id}","method":"DELETE","mapping":{"params":"{\n \"webrixAdminUrl\": settings.webrixAdminUrl ? settings.webrixAdminUrl : \"https://app.withwillow.ai\",\n \"id\": arguments.id\n }"}},"annotations":{"readOnlyHint":false,"idempotentHint":true,"destructiveHint":true}}]}}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema_version": 1,
3
- "generated_at": "2026-10-24T07:16:13.252Z",
3
+ "generated_at": "2026-10-24T08:36:19.340Z",
4
4
  "connectors": [
5
5
  {
6
6
  "id": "github",
@@ -333,7 +333,7 @@
333
333
  "description": "Cross-organization super-admin operations for Willow: browse organizations, growth and POV activity, an org's configured MCP servers, support access, MCP health, and AI-risk migration status; cross-org analytics (WQL → JSON) and dashboards; plus the connector catalog — draft a connector from a description, pull its tools off the live MCP server, verify a credential, then snapshot, test on chosen MCP servers, and release. Access is restricted to Willow super admins.",
334
334
  "icon": "willow-admin.svg",
335
335
  "category": "other",
336
- "hash": "96f55210f9dc4fa45a625e6b712b27a21c7af326f360fd8bb020d24dd9878d16"
336
+ "hash": "9942bca0e44bbffdf6b1f1d47501e75c8fe145b349eac7178efb6df2fcd9d9b2"
337
337
  },
338
338
  {
339
339
  "id": "attio-official",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-s/connectors",
3
- "version": "0.0.20261024071613",
3
+ "version": "0.0.20261024083619",
4
4
  "description": "Willow connector catalog: one schema for every connector, plus the published catalog JSON",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",