Skip to main content
Glama
606,634 tools. Updated 2026-09-24 10:13

"Managing Docker containers for Windsurf IDE on Linux" matching MCP tools:

  • Update an existing container — rename, change description or negative_space (what does NOT belong here), move to a different parent, set display position, or archive/unarchive it. Works for both personal and team containers the current user can edit (team containers require the editor role). Refuses the space's root (root: true in containers-get); set that space's instructions with instructions-update instead, and pass parent_id null, not the root's id, for a top-level folder. Required: id (integer). Optional: name, description, negative_space (pass null to clear it), parent_id (null for root, must be in the same scope), position (integer, lower = first). Archiving: archived (boolean) archives or unarchives the folder itself; add include_notes: true to also retire/reactivate every note filed in it IN BULK, and include_nested: true to sweep nested sub-folders (and, with include_notes, their notes) too. This is THE way to retire a whole folder — e.g. a finished project or a large import whose notes keep surfacing in dashboards — in one call; never loop notes-update over each note for that. The response then includes containers_changed and notes_changed counts (rows actually flipped; note bodies are not returned). On team containers an include_nested sweep requires the editor role on every affected sub-folder. Caveat on reversing: an unarchive sweep reactivates EVERYTHING it touches — include_nested resurrects sub-folders, and include_notes resurrects notes, that the user had archived individually before the sweep. When that matters, unarchive selectively: archived: false on specific folders, and individual notes via notes-update. Unarchiving a nested folder also reactivates its archived ancestor folders, so the restored folder stays reachable. Find archived folders again later with containers-list scope 'archived'.
    Connector
    Destructive
    OAuth
  • Perform a Linux package vulnerability audit using SecDB. ## What this tool does Analyzes the installed packages of a Linux system-identified by OS and OS version-and returns vulnerability information plus a Markdown summary. The audit results are based exclusively on the package list provided by the user. ## When to use this tool Use this tool when the user wants to determine: - whether installed packages contain known vulnerabilities - whether a host, VM, container, or base image is affected by security advisories - which packages require patching or upgrading If the user does not know the valid values for `os` or `version`, first call the `linux_os` tool to retrieve the exact supported combinations. ## Inputs - **os**: Linux distribution identifier supported by SecDB (use `linux_os` to obtain allowed values). - **version**: OS version or codename corresponding to the selected distribution. - **packages**: list of installed packages, **one per line**, generated using the appropriate system command: ### For RPM-based distributions (RHEL, CentOS, Rocky, Alma, SUSE) rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' ### For DEB-based distributions (Ubuntu, Debian) dpkg-query -W -f='${Package} ${Version} ${Architecture}\n' ### For Alpine Linux apk list -I The raw output of these commands can be passed directly as the `packages` input (one package per line). ... python3 3.12.3-0ubuntu2.1 amd64 systemd 255.4-1ubuntu8.10 amd64 tmux 3.4-1ubuntu0.1 amd64 ... ## Outputs - **report**: structured objects describing the advisories affecting the audited packages. - **summary**: Markdown summary including total vulnerabilities, severity breakdown, and key findings. ## LLM usage guidelines - Never guess whether a package is vulnerable-always call this tool for Linux audits. - If `os` or `version` is unclear or missing, call `linux_os` and ask the user to choose a valid combination. - Normalize the package list to “one entry per line” if the user provides unstructured output. - The `summary` is already Markdown and can be shown directly. - Use `report` when deeper technical analysis is required.
    ConnectorNo auth
  • Who am I? Returns the signed-in account: email, @handle, plan + limits, counts of sites/domains/drives, and connected DNS providers. Call this first to orient before managing sites or domains.
    ConnectorNo auth
  • Make Vilix automatic. Call this when the user asks "how do I make this automatic", "set this up so it remembers on its own", or right after a first connection when offering setup. Returns a short custom-instructions block the user pastes into THIS tool's personalization / custom-instructions settings so the AI starts calling Vilix (get_context / save_turn) on its own — plus exactly where to paste it. `recommended` is the block matched to the caller's tool; `blocks` lists every supported tool's block (and for headless always-on tools, an enforce-every-turn variant for an always-on rules file). `source` (optional) — the tool label you run in (e.g. "ChatGPT", "Claude", "Cursor", "Codex", "Copilot", "Windsurf"), used to pick the right block; omit to get the generic default. This is an OPT-IN setup you hand to the user — it is not auto-applied; Vilix logs nothing silently.
    ConnectorOAuth
  • Replace the ssh keys authorised for root on a persistent Linux machine. This is how you revoke: send the list without the key you want gone, and on a running machine it stops working immediately. Sending an empty list removes every key. Not a patch — whatever you send becomes the whole list, so read the current keys from scalix_computer_list first if you mean to add one.
    Connector
    Destructive
    No auth
  • Search a registry for packages matching q. registry=all fans out to npm, Docker Hub, and the VS Code Marketplace and merges the results. PyPI has no public search API, so registry=pypi returns 400 not_supported — look a PyPI package up by name via get_package instead. Results are normalized PackageSummary items (npm adds a relevance score; Docker adds isOfficial).
    ConnectorNo auth

Matching MCP Servers

Matching MCP Connectors

  • Find every company a person runs or represents - across BOTH registers in one call (cross-border person search). Read-only. Parameters: - name (required): person name substring, case-insensitive, e.g. "Mustermann". - country (optional, default "all"): "AT" | "DE" | "all". - page_size (optional, default 25): results per country. - status (optional, default "all"): "active" | "inactive" | "all". Returns the merged search_companies envelope ({countries, results, per_country, notices}) plus ``person_query``; every result card carries ``country``, ``company_id`` and the matched manager. AT matches the primary managing director, DE matches all managing directors AND registered signatories. IMPORTANT: matching is by name and the registers publish birth YEAR only - a shared name across companies or countries does not prove the same person (the notice says so; use birth years and context to corroborate). For general company search use search_companies with other filters; manager_name can be combined there too.
    ConnectorNo auth
  • Get an overview of the Second Brain: counts of notes, containers, tags, and inbox items, plus recent_notes (the 5 most recently created personal notes) and recent_changes (the 5 most recently edited notes across ALL spaces — personal, teams, and shared containers — newest edit first). Use recent_changes to orient at the start of a conversation on what changed lately everywhere. If everything is empty because the user hasn't saved anything yet, do not just report that: call `me` and follow onboarding.next_action to run their 60-second setup. No parameters required.
    ConnectorOAuth
  • Get a Stripe billing portal URL for managing payment methods and invoices. Returns a URL (not a redirect) that the human can open in a browser. Requires: API key with read scope. Args: flow: Optional. Set to "payment_method_update" to go directly to the payment method update page. Returns: {"url": "https://billing.stripe.com/p/session/..."}
    ConnectorNo auth
  • Fetch original text by an opaque id from search or document_outline. Pass ids unchanged. Navigation containers have citable=false and child ids, not source evidence. Historical page identifiers return migration guidance.
    ConnectorNo auth
  • Add elements to, and edit campaign-level fields of, an existing **Channel-First / Native (N×N×N)** campaign — the one built with `create_native_structure_campaign` (channel.structureType=NATIVE, WizNativeAdContainer). This is the NATIVE counterpart of `add_and_edit_campaign_elements`: that tool edits Precision (1×1×1 / METADATA) campaigns; THIS tool edits Native (N×N×N) campaigns. CRITICAL: PICK THE TOOL BY THE CAMPAIGN'S STRUCTURE (not by user phrasing): • Native / Channel-First / Platform-First / N×N×N campaign → THIS tool (`add_and_edit_native_campaign_elements`). • Precision Optimization / 1×1×1 / METADATA campaign → `add_and_edit_campaign_elements`. Both tools guard: call THIS tool on a Precision/METADATA campaign and it returns an error telling you to use `add_and_edit_campaign_elements`, and vice-versa. So if you guess wrong, the error tells you the right one — no silent mis-write. If you don't know the structure, check the campaign first (its channels' structureType) or just try and follow the redirect. WHAT THIS TOOL DOES: - EDIT campaign-level fields: name, budgetGroup, startDate, endDate (same smart/partial semantics as the flat tool — only pushed when different / supplied). - ADD new containers: each channel's `containers[]` APPENDS new WizNativeAdContainers (one audience × an `ad_offers` list of {ad, offer} pairs each, same shape as `create_native_structure_campaign`). Existing containers are PRESERVED — the channel's current container list is re-POSTed with the new ones appended. - ADD bare target groups: each channel's optional `target_groups[]` (names) attaches targeting groups to the native channel without a full container (places targetingGroupId on a reused/appended ad-less container). - ATTACH negative keyword lists (Google Ads / Microsoft Ads only): the search channel block's optional `negative_keyword_lists[]` (names of EXISTING lists) attaches them channel-wide — valid with or without new containers. Names inside `containers[].negative_keyword_lists` are unioned in and applied at the same channel level. A name that doesn't resolve on the channel is reported in `errors[]`, never silently skipped. - EDIT existing containers (PER CONTAINER): each channel's optional `modify_containers[]` targets an existing container by `name` and, within it, deletes specific Ad—Offer rows (`remove_ads`), clears an offer from one ad while keeping it on the OTHER ads (`clear_offers_on_ads`), removes this container's audience / targeting group / keywords / exclusion (`remove_audience` / `remove_target_group` / `remove_keywords` / `remove_exclude_audience`), or deletes the whole container (`delete_container`). This is the surgical counterpart to the channel-wide remove_* tools — use it when an audience/offer/ad is shared across containers and you only want to touch one. Removing a group clears it on that one container; a group reused by other containers stays alive for them. WHAT THIS TOOL DOES NOT DO: - It does not switch a campaign's structure (that's fixed at creation). - For a change that spans ALL ads (remove an offer/ad everywhere it appears on the channel), use the channel-wide removal tools (remove_offers_from_campaign / remove_ad_from_campaign / remove_audiences_from_campaign / remove_target_groups_from_campaign / remove_keywords_from_campaign); `modify_containers` is only for a specific container/row. CONTAINER RULES (same as create_native_structure_campaign): - Each container is one audience × a LIST of (ad, offer) pairs (`ad_offers`, 1+). Group several ads/offers under one audience by adding pairs — e.g. 3 ads on the same offer = 3 pairs that repeat the same `offer` id. Send two containers only to run the audience as two separate ad-sets. - `audience` / `exclude_audience` / `target_group` are NAMES (resolved server-side); the `ad` / `offer` inside each `ad_offers` pair are integer IDs. - Audience names are resolved BEFORE anything is created: a container whose `audience` cannot be resolved is dropped with an error in `errors[]` that states whether retrying can help ("may still be matching") or not ("not available on this channel"); no keyword group or other element is left behind for a dropped container. - `audience` is REQUIRED for LinkedIn/Facebook/Instagram/Reddit; OPTIONAL for Google/Microsoft search containers (keyword-only is valid — provide `keywords`/`keyword_ids` instead). - Offer–channel lock still applies: a Lead Gen offer must be locked to the container's channel (LinkedIn→LINKEDIN, etc.); Google takes Landing Page offers only; Landing Page offers are universal. RESPONSE: same top-level shape as `add_and_edit_campaign_elements` (success, campaign_id, changes {renamed, budget_group_reassigned, schedule_updated}, added_summary per channel {containers, target_groups, negative_keyword_lists, and — when modify_containers is used — ads_removed, offers_cleared, containers_deleted, audiences_removed, target_groups_removed, keywords_removed, excludes_removed}, optimization_group, campaign_url, full_response). On partial failures, success=false plus `errors[]`; the rest of the edit still proceeds. EXAMPLE (append a LinkedIn container + rename): add_and_edit_native_campaign_elements(campaign_data={ "campaignId": 159490, "name": "Q3_ABM_Native_v2", "linkedin": {"containers": [ {"name": "VPs > Demo > Form", "audience": "VPs - NA", "ad_offers": [{"ad": 156502, "offer": 57538}]} ]} }) EXAMPLE (append a Google keyword-only container + bare target group): add_and_edit_native_campaign_elements(campaign_data={ "campaignId": 159490, "google": { "containers": [ {"name": "Incident Response", "ad_offers": [{"ad": 210804, "offer": 67269}], "keywords": ["incident response platform"], "negative_keyword_lists": ["Competitor Brands"]} ], "target_groups": ["Tech Decision Makers"] } }) EXAMPLE (ROW-LEVEL: drop the offer from ONE ad in a container, keep it on the other ads): add_and_edit_native_campaign_elements(campaign_data={ "campaignId": 159490, "facebook": {"modify_containers": [ {"container": "ICP > 3 creatives > TOF offer", "clear_offers_on_ads": ["Ungated-AI-in-Finance-v2-vert_FB"]} ]} }) EXAMPLE (PER-CONTAINER: delete one Ad—Offer row in one container; delete a whole other container): add_and_edit_native_campaign_elements(campaign_data={ "campaignId": 159490, "linkedin": {"modify_containers": [ {"container": "VPs > Demo > Form", "remove_ads": ["Old Creative A"]}, {"container": "Retired ad-set", "delete_container": True} ]} }) EXAMPLE (PER-CONTAINER: drop a reused audience from ONE container, keep it on the others): add_and_edit_native_campaign_elements(campaign_data={ "campaignId": 159490, "facebook": {"modify_containers": [ {"container": "ICP - A2", "remove_audience": True} ]} })
    Connector
    Destructive
    API key
  • Entry-point tool. Lists every tracking container the user can access across all connected servers. Each container is one tracked website or app. USE WHEN: - Starting any session — you need a container_id before calling get_report, get_summary, list_events, or list_sessions. - The user asks "which sites / accounts can I see?" or names a brand without giving a trc_ ID. - You need the server_name for multi-server setups. - **OAuth fallback path of the agent install contract** (https://www.tracklution.com/agent-install.md, Turn 4 Step 2) — after the user completes browser-OAuth, call this tool to enumerate the user's containers and resolve the (container_id, container_hash) pair you need for onboarding tools (get_installation_scripts, verify_and_score, create_login_link, ...). Match against the user's website URL via the `domain` field (compare by host name — `domain` may be `null` on freshly-created containers, skip those). Returns container IDs (trc_...), container hash (dashboard-URL identifier AND secret half of the dual-key auth-token cache lookup; pass as `container_hash` on every onboarding-tool call — may be `null` on legacy Laravel deploys that pre-date the field, in which case fall back to register_and_provision with auth_token + website_url), titles, domains, currency, timezone, and active status.
    ConnectorOAuth
  • List supported Linux operating systems and their corresponding versions for use with the `linux_audit` tool. ## What this tool does Returns an array of supported OS/version pairs, each in the form: {"os":"name", "versions":["version or codename"]} This allows the LLM and the user to know exactly which inputs are valid for the `linux_audit` tool. ## When to use this tool Use this tool when: - the user does not know which OS names or versions are supported - the user provides unclear or ambiguous OS information - you need to validate `os`/`version` before performing a Linux audit This tool should typically be called **before `linux_audit`** whenever parameters are uncertain. ## Inputs This tool does not require any input. ## Outputs Returns an array of objects: - **os**: supported Linux distribution identifier - **versions**: corresponding list of supported release or codename Example: [ {"os": "ubuntu", "versions": ["noble","focal"]}, {"os": "debian", "versions": ["bookworm","sid"]}, {"os": "redhat", "version": ["redhat-9.0"]} ] ## LLM usage guidelines - Use this tool to validate or suggest correct OS/version combinations before calling `linux_audit`. - If the user provides invalid or misspelled OS names, retrieve the official list here and ask them to select one. - Do not guess operating system identifiers-always rely on this tool to confirm correctness.
    ConnectorNo auth
  • Scan a pasted config, file, code snippet, or blob for exposed credentials and obvious security misconfigurations. Use whenever a user shares a .env, docker-compose.yml, nginx.conf, JSON/YAML config, or any text and asks "is this safe to share/commit?", "any leaked API keys/secrets?", or "what's misconfigured?". Detects cloud credentials, Stripe/GitHub/GitLab tokens, OpenAI/Anthropic/Gemini/Hugging Face/Groq/Replicate keys, private-key blocks, JWTs, DB connection strings, plus misconfigs like debug-on, 0.0.0.0 binds, disabled TLS verification, privileged containers, and weak passwords. Deterministic. It analyzes the provided text and returns findings only — it never stores, transmits, or requires any live credential.
    ConnectorNo auth
  • Updates an event. `title`, `start` and `end` describe the complete new state — including whether it is all-day: an event created all-day becomes a timed event if this call passes timestamps, and vice versa. Two kinds of event are addressable: 1. Events THIS access created (via `event_id` from create_event) — always. 2. Any other event in a calendar the user allowed managing, visible in `list_calendars` as `manageable: true`. Their ids come from `get_availability`. Four things are refused, and each says what to do instead — pass that on rather than retrying: • the calendar is not released for managing (the user can allow it per calendar) • it is shared at less than full detail (a setting, not a temporary error) • the event is a synchronised COPY — change the original in the named source calendar, the change reaches this one by itself • someone else organises it — call `respond_to_event` with `response: "declined"` and the same `event_id` instead
    Connector
    Destructive
    API key
  • Build a container image on Control Plane from a GitHub or GitLab repository and push it to the org's private registry. No Docker daemon is involved: the service clones the repo, detects how to build it (Dockerfile when present), and always produces linux/amd64. Returns a buildId to read with get_image_build — the build keeps running after this call returns. ONLY repositories work here. To build a LOCAL FOLDER, tell the user to run `cpln image build --remote --dir PATH --name NAME:TAG` in their terminal — this server has no access to their filesystem. Building an existing NAME:TAG replaces that image. A private repository needs a one-time browser authorization per org; this tool returns the link when that is missing. Recommended reading before first use: get_cpln_skill("image") — the runbook for this tool family (read once per session).
    Connector
    Destructive
    OAuth
  • Work out how a shipment fits into shipping containers, trucks or pallets, using a real 3D bin-packing solver. Describe the cargo in plain English -- quantities, dimensions, weights, and any constraints such as fragile, non-tiltable, max stack height or a preferred container type -- and get back which containers are needed, how full each one is, anything that did not fit, and a link to an interactive 3D load plan. Use this instead of estimating from volume. Volume arithmetic ignores stacking rules, orientation and weight limits, and overstates what fits by a wide margin on real cargo. For cargo that must not overhang -- drums, glass, anything that must stay level -- set `stability`. It is the one constraint the prompt cannot express, because it governs how the solver stacks rather than what is being shipped.
    ConnectorNo auth
  • Liveness + dependency probe. Returns ``{"status", "version", "components": {server, redis, postgres, semantic, distiller, graph, ollama}}``. ``semantic`` is the pgvector + embedder store. Optional deps report ``"disabled"`` when off and do not degrade overall status. Always cheap; safe to poll on a 10s interval. Used by Docker healthcheck and the ``/health`` HTTP route.
    ConnectorNo auth
  • Get a model's merged state (base fields plus all computed derived fields). On a large model this is the biggest context cost — narrow it: pass 'paths' to project only specific subtrees (canonical addresses, each spliced back into a pruned document at its address), and/or 'depth' to cap nesting (deeper containers collapse to a '<object: N fields>' / '<array: N items>' marker). Pass an optional ISO-8601 'at' timestamp for a point-in-time read from mutation history.
    ConnectorNo auth
  • Place up to 20 boxes into containers or pallets with rotation, weight and support rules. FREE. Typical input {"items": [{"id": "A", "l": 60, "w": 40, "h": 30, "weight": 12, "qty": 4}], "containers": [{"id": "pallet", "l": 120, "w": 80, "h": 150, "max_weight": 500, "qty": 2}]} returns {"containers_used": 1, "containers": [{"placements": [{"id": "A", "x": 0, "y": 0, "z": 0, "l": 60, "w": 40, "h": 30}, ...], "volume_fill_pct": 20.0}], "unplaced": []}. rotation per item: any, upright (rotate around the vertical axis only) or fixed; fragile items carry nothing; rules.min_support (default 0.6) is the share of a box's base that must rest on the floor or on boxes below. Use to decide pallet or carton count before booking freight. Not proven optimal: it is a first-fit-decreasing heuristic, reported as such. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
    ConnectorNo auth
  • Work out how a shipment fits into shipping containers, trucks or pallets, using a real 3D bin-packing solver. Describe the cargo in plain English -- quantities, dimensions, weights, and any constraints such as fragile, non-tiltable, max stack height or a preferred container type -- and get back which containers are needed, how full each one is, anything that did not fit, and a link to an interactive 3D load plan. Use this instead of estimating from volume. Volume arithmetic ignores stacking rules, orientation and weight limits, and overstates what fits by a wide margin on real cargo. For cargo that must not overhang -- drums, glass, anything that must stay level -- set `stability`. It is the one constraint the prompt cannot express, because it governs how the solver stacks rather than what is being shipped.
    ConnectorNo auth