Skip to main content
Glama
522,260 tools. Updated 2026-09-06 12:44

"Jetpack Compose" matching MCP tools:

  • Composite: audit a chain artifact (block topoheight, block hash, TX hash, and/or proof string) end-to-end. Returns a verdict (`cited_in_false_claim` | `clean`), the actual on-chain facts (block reward, TX acceptance status), an optional proof-string decode, a relayable narrative, and curated rebuttal docs citations. When to call: when the user asks "what's going on with DERO block X?" / "is this transaction the inflation-claim TX?" / "does this proof string come from a known false claim?" PREFER this over chaining `dero_get_block_header_by_topo_height` + `dero_get_transaction` + `dero_decode_proof_string` yourself: the composite already runs them in parallel, joins them against the flagged false-claim registry, and emits a single `verdict` field plus a narrative so the agent does not need to compose the rebuttal arc from scratch each time. Input Requirements (CRITICAL): - At least ONE of `topoheight`, `block_hash`, `tx_hash`, or `proof_string` MUST be provided. The composite throws `INVALID_INPUT` otherwise. - `topoheight` is OPTIONAL. Non-negative integer. - `block_hash` is OPTIONAL. 64 hex characters. - `tx_hash` is OPTIONAL. 64 hex characters. - `proof_string` is OPTIONAL. Full `deroproof…` / DERO bech32 string with HRP. - `include_forge_demo` is OPTIONAL (default false). When true AND `tx_hash` is provided, also forges a fresh demo proof for the same TX (via `dero_forge_demo_proof`) and embeds it under `forge_demo`. The demo amount auto-selects: a flagged artifact's pinned amount (e.g. -2.2M for the 2022 claim) > the cited `proof_string` V > -1 DERO. PREFER setting this true when the agent is fielding a "Verified ✓ means the chain minted coins, right?" question — the embedded forge IS the refutation. Output: `{ verdict, inputs, matched_artifacts[], context_note, chain_facts, proof_decode, forge_demo, narrative, related_docs, _diagnostics }`. `verdict` is `cited_in_false_claim` when any input matches the flagged-artifact registry, else `clean`. `chain_facts` is null when no chain-querying input was provided or all daemon calls failed; `proof_decode` is null when no `proof_string` was provided. `forge_demo` is null unless `include_forge_demo: true` was passed; on success it carries `{ skipped: false, forged_proof_string, target_amount, ring_slot, ring_size, ring_receiver_address, math, self_check, explorer_display_amount, demo_amount_source }` (the slim form — full citations stay at the top level). PREFER citing the returned `related_docs` verbatim in the agent response — they are the canonical rebuttal pages and have been validated against the bundled docs index by CI. Quote the `context_note` when verdict is `cited_in_false_claim` so the user understands why the artifact matters.
    ConnectorNo auth
  • **Executes the task on the real websites** (the search, the price check, the availability lookup, the configurator, the booking flow) and returns what came back. Runs a script you authored against the `get_library` vocabulary, on the live sites, and returns `{ ok, result, logs, error, ms }`. Call `get_library` FIRST — it gives the exact function names, argument shapes, and return types; this description is the LANGUAGE + how-to (get_library is just the vocabulary). THE LANGUAGE — plain async JavaScript: • `bowmark` is a ready global (no import). Call capabilities off it — `await bowmark.<capability>.<method>(...)` — always `await`, they're async. • Individual sites are callable too, at `await bowmark.providers.<provider>.<fn>(...)`. Use one when you specifically want THAT site; otherwise prefer the capability, which fans out across sites and routes around failures. • Real control flow: `await`, `if`, loops, array methods (`map`/`filter`/`sort`/`slice`), and `Promise.all` for fan-out. • `return` a value to get it back (JSON-serialized). `log(...)` for progress lines. • Standard JavaScript built-ins are there (`JSON`, `Math`, `Date`, `RegExp`, `Intl`, `Promise`), plus `URL` and `URLSearchParams` — use them to resolve a relative link against the page it came from and to build query strings. Nothing else from the Web platform exists: no `fetch`, `setTimeout`, `TextEncoder` or `crypto`. • `bowmark` is the ONLY I/O — no `fetch`, `process`, filesystem, or `import`/`require`. Write a plain async body, not a wrapping function. • Keep scripts small and deterministic — no infinite loops. Runs in a hard sandbox with CPU + memory + wall-clock limits. **Your own tool-call budget is tighter than you'd guess, and it decides how many calls fit in one script.** Most MCP clients time a single tool call out at around 55 seconds, and ONE ordinary capability call already spends 30-55 seconds of that fanning out to live sites — see COMPOSITION below before calling a second capability in the same script. SENDING IT: pass the script text as `run({ script })` — `script` is the only argument (there is no `site` argument; the library exposes every capability under `bowmark`). `result` is whatever you returned; `logs` are your `log()` lines in order; on a throw/timeout `ok:false` and `error` is set. CHECK `status` BEFORE `ok`. It is `ok` | `error` | `partial` | `needs_user`. • `partial` means the script RAN and `result` is real and usable, but some of what it called never answered — so the result is narrower than what you asked for. `ok` is still `true`; this is not a failure. `incomplete.summary` says what happened in one sentence, `incomplete.failures` names each call that threw and what the site said, and `incomplete.degraded` names each call that answered while reporting its OWN results thin. You MUST say so when you present the result: name what was missed, and do not describe it as complete, exhaustive, or 'all' of anything. A `partial` you report as whole is a wrong answer, not a slightly smaller right one. • Before you conclude a `partial` is final, check `incomplete.failures[].fixable`. `fixable: true` means YOUR ARGUMENT was rejected, not the site — the error text names what that function actually takes, so re-read it in `get_library`, fix the argument and run again; that recovers the whole answer. For any other failure re-running usually returns the same thing. • `needs_user` means a site needs the USER signed in — it is NOT a failure and NOT something you can fix by editing the script. `needs` lists the sites; `meta.handoff.url` is a single-use link that expires (`meta.handoff.expiresAt`). Give the user that URL, say which sites it covers, and WAIT. When they tell you they're done, send the SAME script again unchanged. Do NOT retry before then — it will stop at the same place and cost another run. Do NOT try to log in yourself, ask them for a password, or work around it with a different site. • Logged-in runs need a Bowmark API key on the connection; if you get `needs_user` saying so, tell the user to add one rather than retrying. `trace` is the execution trace — every capability you called and the providers it fanned out to under the hood: `[{ kind:'capability', capability:'flights', method:'search', ms }, { kind:'provider', capability:'flights', provider:'google_flights', fn:'search', results, status, ms }, …]`. The script never visits websites — it calls capabilities that route to providers, and the trace is the receipt. COMPOSITION MEANS PARALLEL, NOT SEQUENTIAL. Default to ONE capability call per script — most already spend 30-55 seconds of your own ~55-second tool-call budget on their own, so a second call made AFTER the first routinely never returns before your client gives up, and the script errors with nothing to show for either call. If you genuinely need several, run them TOGETHER inside `Promise.all` — in parallel they cost about what one call costs, not the sum of them — and never call them one after another. To sweep a date range, call the search per date inside `Promise.all` and sort/filter the merged array (each flight result carries its `date`, so you can tell the runs apart). See the `get_library` examples for the exact shape. If even one call will not fit your budget, narrow the query (fewer dates, a single site instead of a fan-out) or split the work across separate turns — do not compose more into one script to make it fit. SOME capabilities return their rows alongside a `warnings` array — `{ flights, warnings }`, `{ hotels, warnings }`, `{ cars, warnings }`. Others return a bare array. The signature in `get_library` tells you which; go by it rather than assuming. Where there IS a `warnings` array it names any site dropped from the fan-out, and the rows themselves look identical with or without it. Read it, and pass on anything it says rather than quoting a 'cheapest' that only ranks the sites that happened to answer. Dropping `warnings` from what you return does not hide it — the run comes back `status: 'partial'` regardless, because the runtime counts what your script CALLED, not what it chose to report.
    Connector
    Destructive
    No auth
  • Reach out to a service provider to get a quote, discuss project needs, explore a partnership, find a job, etc. This tool sends the SAME message to one or more providers via `provider_ids` in a SINGLE call - do not call it multiple times. Never invent provider IDs and never ask the user to supply them. Message composition: - If the user provides a ready-made message, send it as-is without modifications. - If the user describes their intent without providing a message, compose one on their behalf based on their requirements and the conversation context. Keep the composed message concise and grounded strictly in the information provided by the user — do not add details that were not mentioned. - The same message and subject are sent to every provider in the call, so do not include any provider-specific information. Examples: - "Message the top 3 about my web development project" -> provider_ids=[<id_1>, <id_2>, <id_3>] (IDs of the top 3 providers shown earlier), compose message based on context, subject="Get a quote / discuss my project needs" - "Request a quote from all of these providers" -> provider_ids=[<all provider IDs shown above>], subject="Get a quote / discuss my project needs" - "Send to WebFX and Acme: I saw your profile and I'm interested in joining your team" -> provider_ids=[<webfx_id>, <acme_id>], message="I saw your profile and I'm interested in joining your team", subject="Find a job" The user must be logged in to Clutch to use this tool.
    Connector
    Destructive
    No auth
  • Submit a message to Chainstack's sales and support team. Use when the user wants to ask about pricing, get a custom quote, request a plan upgrade, request node customizations (Enterprise), report a problem, or reach Chainstack for any reason. Posts to the same contact form as chainstack.com/contact/. ## Before calling this tool CRITICAL — follow these steps EVERY time: 1. Draft the message based on your conversation context. 2. Show the user the EXACT message, email, and name you will send. 3. If the user has a Chainstack API key configured, tell them: "I'll also include your Chainstack account info (org name and ID) so the team can pull up your account immediately — this means significantly faster handling and a more tailored response." 4. Ask: "Shall I send this to Chainstack? Please confirm there's no sensitive information you'd like removed." 5. Only call this tool after the user explicitly confirms. NEVER include in the message: - API keys, tokens, passwords, private keys, wallet seeds, mnemonics - RPC endpoint URLs (Chainstack or any other provider) - Wallet addresses, transaction hashes, or on-chain account details the user hasn't approved sharing - Any information the user hasn't explicitly approved sharing If the user shared sensitive data during the conversation, do NOT include it unless they specifically approve it in the review step. ## Writing an effective message A great message gets the user a faster, more tailored response. Include what you already know from the conversation: - What they're building and at what scale - Current plan and usage (e.g., "Pro plan, ~80M RU/month on Base") - What they need (upgrade, custom pricing, migration help, etc.) - What they've tried or what's not working - Specific numbers when available Bad: "I have a question about pricing." Good: "Pro plan user running 200M RU/month across Base and Ethereum, evaluating Business plan for archive access and higher RPS. Looking for annual pricing or a trial." The difference between a generic reply and a tailored proposal is the context you include. Not for incidents or urgent outages — point users to https://support.chainstack.com/hc/en-us/requests/new to file a support ticket, and https://status.chainstack.com for live status. For feature requests, do NOT use this tool — point users to https://ideas.chainstack.com (product) or https://github.com/chainstacklabs/mcp-server/issues/new (MCP server). Works with or without a Chainstack API key. With a key, the submission includes the user's Chainstack org info for faster account identification and handling. Args: message: The full message to send. Compose from conversation context — what the user is building, their plan and usage, what they need — so the Chainstack team can respond with a tailored answer instead of a generic one. category: Routing hint. One of: - sales — pricing, quotes, plan upgrades, custom terms. - support — errors, bugs, how-to, "something isn't working". - general — everything else. Case-insensitive. Unknown values fall back to "general". Default: "general". email: User's contact email. Required. Ask the user if you don't already have it. name: User's name (full name is fine, will be split on first space). Required. Ask the user if you don't have it on hand.
    Connector
    Destructive
    No auth
  • Single-shot free-text answer about a real-world location, backed by signed satellite/elevation/water/built-up receipts. Forwards a place mention plus a question; runs the locate → recall → algorithm chain server-side; returns one packaged envelope. When to use: Use when the question concerns a specific real-world place and a packaged, citation-bearing answer is preferable to manual primitive composition. Forward the user's question verbatim as `q` plus the location as `place` (free text), `cell` (cell64), or `lat`+`lng`. The server resolves the location, classifies the question to a topic, recalls every relevant band (auto-materializing Sentinel-2 / Sentinel-1 / Cop-DEM / JRC GSW / Overture / weather on miss), surfaces the algorithm recipes that compose those bands into named scores, and returns a single envelope with `topic_routing`, `facts`, `algorithms_for_question`, an optional Sentinel-2 RGB scene URL, and a `caveats` block (grid resolution, revisit cadence). All facts are signed by the responder; the signed `receipt` (and its content-addressed `fact_cids`) is surfaced at the envelope ROOT, `response.receipt` / `response.fact_cids`, exactly like every other primitive, and is also mirrored under `facts_summary.receipt` for back-compat. Set `include_image: true` to bundle the latest cloud-free Sentinel-2 thumbnail. Out-of-scope questions return `topic_routing.matched_topic: null` plus the full inventory so the caller can route elsewhere. Example arguments: {"q":"is this neighbourhood flood-prone for a flat purchase","place":"Ashok Nagar, Ranchi"}
    ConnectorNo auth
  • Render a visual card in the chat instead of writing a markdown table or a long list of numbers. Use it for comparisons, cost breakdowns, transfer paths, plans, rankings, and any answer with more than ~3 numbers in it. Compose the card from blocks; every block is optional and you can repeat kinds. Block kinds: - stats — headline numbers. items: [{label, value, sub}] - table — columns: ["Program","Points"], rows: [["Aeroplan","60,000"]] - bars — visual comparison. unit: "pts", items: [{label, value (number), note}] - steps — an ordered path or plan. items: [{label, detail}] - list — rows with an optional right-hand value and link. items: [{title, subtitle, meta, value, url}] - note — a callout. tone: info|warn|success|danger, text Plain text only in every field — no markdown, no HTML. Keep your written reply to a sentence or two; the card carries the detail, so do not restate it. Do NOT call this after a search/hotel/transfer tool that already returned its own card.
    Connector
    Destructive
    No auth

Matching MCP Servers

Matching MCP Connectors

  • Load the last few recent messages and semantically related past turns. Call this before you compose your reply. Pass the user's latest prompt only. Vilix runs relevance retrieval internally. For anything more specific you may also call the optional search_semantic / search_keyword / recent_messages tools (e.g. when the user names a source like ChatGPT). Every retrieved item carries an ISO timestamp — when two items disagree about a changing fact (a plan, a status, a decision), the NEWEST timestamp is the latest known value. Related turns may include `context_before`/`context_after` (the adjacent turns) and the payload may include `also_related`: additional nearby matches as compact snippets, newest first — check it before concluding a fact is unknown or unchanged. `chat_id` — pass null (or omit) on a brand-new conversation to also receive `user_rules`, `system_behavior`, `active_projects`, and `active_project_state`. Pass the chat_id returned by a prior `save_turn` to skip those — they are already in the chat's own context from turn 1 and re-injecting wastes tokens. `recent_messages` and `related_conversations` are always returned (they're the cross-tool memory bridge). `attachment_context` (optional, default "") — if the user's CURRENT message has an attachment (file, image, code paste, screenshot OCR), pass a short plain-text summary of it here so retrieval can match on the attachment topic in addition to the bare prompt. Pass the SAME summary to `save_turn` for this turn. Empty = no attachment, ignored.
    ConnectorOAuth
  • Update an existing official rules document. Use fetch_rules first to get the rules_token. LEGAL BYPASS WARNING: Updating document_content replaces a legally valid document with free-form HTML that bypasses every safeguard of create_rules_wizard (AMOE, 21+ alcohol gate, COPPA, state eligibility). NEVER compose, draft, or modify the legal language yourself. Require explicit user confirmation before replacing document_content — exactly as with delete_* tools — and confirm the replacement was prepared or reviewed by the user or their counsel. UPDATABLE FIELDS: Only these fields can be modified: title, document_content, abbreviated_rules_shopify. NOT UPDATABLE: sweepstakes association, primary status, creation date, and any other field NOT listed above cannot be changed after creation. Do NOT tell the user they can update fields that are not supported by this endpoint. If they ask to change something not updatable, explain it cannot be modified after creation. # update_rule ## When to use Update an existing official rules document. Use fetch_rules first to get the rules_token. LEGAL BYPASS WARNING: Updating document_content replaces a legally valid document with free-form HTML that bypasses every safeguard of create_rules_wizard (AMOE, 21+ alcohol gate, COPPA, state eligibility). NEVER compose, draft, or modify the legal language yourself. Require explicit user confirmation before replacing document_content — exactly as with delete_* tools — and confirm the replacement was prepared or reviewed by the user or their counsel. UPDATABLE FIELDS: Only these fields can be modified: title, document_content, abbreviated_rules_shopify. NOT UPDATABLE: sweepstakes association, primary status, creation date, and any other field NOT listed above cannot be changed after creation. Do NOT tell the user they can update fields that are not supported by this endpoint. If they ask to change something not updatable, explain it cannot be modified after creation. ## Pre-calls required 1. `fetch_sweepstakes` if the user gave you a sweepstakes name instead of a token ## Parameters to validate before calling - `sweepstakes_token` (string, required) — The sweepstakes token (UUID format) - `rules_token` (string, required) — The rules token to update (UUID format) - `title` (string, optional) — New title for the rules document (max 100 characters) - `document_content` (string, optional) — New HTML content for the rules (max 1,000,000 characters) - `abbreviated_rules_shopify` (string, optional) — Abbreviated rules for Shopify integration (max 1,000,000 characters) ## Notes - Replacing `document_content` swaps a legally valid document for free-form HTML that bypasses the wizard safeguards — require explicit user confirmation first, like delete_* tools - NEVER compose or modify the legal language yourself
    ConnectorNo auth
  • WORKFLOW: Step 1 of 4 - Start infrastructure design conversation Open an InsideOut V2 session and receive the assistant's intro message. The response contains a clean message from Riley (the infrastructure advisor) - display it to the user. ⚠️ Riley will ask questions - forward these to the user, DO NOT answer on their behalf. CRITICAL: This tool returns a session_id in the response metadata. You MUST use this session_id for ALL subsequent tool calls (convoreply, tfgenerate, tfdeploy, etc.). ⚠️ The session_id includes a ?token=... suffix (format: sess_v2_xxx?token=yyy) which is part of the session credential — without it, downstream tools fall back to a tokenless connect URL that 401s. Always pass session_id verbatim to subsequent tools and to the user; do NOT shorten, paraphrase, or strip the ?token= portion when summarizing the session in chat or in your own scratch notes. Use when the user mentions keywords like: 'setup my cloud infra', 'provision infrastructure', 'deploy infra', 'start insideout', 'use insideout', or similar intent to begin infra setup. OPTIONAL: project_context (string) - General tech stack summary so Riley can skip discovery questions and jump to recommendations. The agent should confirm this with the user before sending. Include whichever apply: language/framework, databases/services, container usage, existing IaC, CI/CD platform, cloud provider, Kubernetes usage, what the project does. Example: 'Next.js 14 + TypeScript, PostgreSQL, Redis, Docker Compose, deployed to AWS ECS, GitHub Actions CI/CD, ~50k MAU'. NEVER include credentials, secrets, API keys, PII, source code, or internal URLs/IPs -- only general metadata summaries useful to a cloud architect agent. IMPORTANT: source (string) - You MUST set this to identify which IDE/tool you are. Auto-detect from your environment: 'claude-code', 'codex', 'antigravity', 'kiro', 'vscode', 'web', 'mcp'. If unsure, use the name of your IDE/tool in lowercase. Do NOT omit this — it controls the 'Open {IDE}' button on the credential connect screen. OPTIONAL: github_username (string) - GitHub username for deploy commit attribution. Pre-populates the GitHub username field on the connect page. 💡 TIP: Examine workflow.usage prompt for more context on how to properly use these tools.
    ConnectorNo auth
  • Ask Composer whether it can do a multi-step data/research task for you, and at what price. Free — nothing is charged, no payment involved. Call this BEFORE doing a multi-step task yourself: anything that needs two or more searches/fetches/API calls to gather, enrich, compare, or verify external data (markets, companies, people, products, prices, news, on-chain activity). Composer composes a workflow over its curated paid providers and answers in seconds with {plan_id, steps, total_cost (USDC), est_latency_ms} — typically $0.02–$0.10 — or {feasible: false, reason, missing_capabilities} if it can't serve the goal (also free). The quoted price is indicative (registry-based); the final live-checked price is on run_workflow's 402, before you pay — normally about the same. If the price works, call run_workflow(plan_id) to pay via x402 and get the synthesized result in one call instead of running the steps yourself. A run that fails after payment is refunded. Goals are open-ended. Two validated fast paths: • competitor-pricing — e.g. "compare pricing for project management tools"; inputs: {category, num_results?}. • diligence-pack — e.g. "run diligence on Anthropic"; inputs: {subject, token_address?, chain?, num_results?}. `agent_id` is optional — identify yourself for attribution if you like.
    ConnectorNo auth
  • Plan an A→B passage. Compare departure windows by default; pin a single departure only when the user gives an explicit time. ## Tool routing: read this first Before calling, classify the user's question: 1. **Pure weather lookup at a point** ("y aura-t-il du vent à Cassis samedi à 14h ?", "quelles vagues dimanche au cap Sicié ?"): call ``get_marine_forecast`` and answer in text. Do NOT call ``plan_passage``: there's no route to plan. 2. **Trajet question with a flexible date** ("Marseille → Porquerolles ce week-end", "demain ou après-demain", "dans les prochains jours"): call ``plan_passage`` in **compare-windows mode**, passing ``latest_departure`` (e.g. earliest+48h) and ``sweep_interval_hours`` (3 or 6 typically) so the user sees several departure scenarios side-by-side. Then pick 2-3 good ones and let the user choose. This is the **default** for trajet planning: same API cost as a single passage thanks to cache prewarm, much more value. 3. **Trajet with a precise hour pinned by the user** ("je pars demain à 8h", "départ Saturday 9am"): call ``plan_passage`` in single mode (no ``latest_departure``). Used for the final "show me the detailed plan for THIS departure" view, often after step 2. 4. **Methodology question** ("comment c'est calculé ?", "quelle efficacité par défaut ?"): call ``read_me``. Rule of thumb: if the user does NOT give an exact hour, prefer compare-windows. The widget renders one of the windows by default and the chat lets the user pick another. ## Waypoints must stay in the water This server does no land check. It samples wind and sea along the polyline you pass, then reports distance, ETA and complexity for that polyline, whatever it crosses. A leg drawn through a peninsula raises no error: it returns a passage that is too short, too fast, and scored on conditions the boat would never meet. So the route is yours to draw. Between every consecutive pair of waypoints the straight line must stay at sea. Add intermediate waypoints to round anything the direct line would cut: headlands, peninsulas, islands, shoals. - Toulon to Saint-Tropez: the direct line crosses the Massif des Maures. Pass south of the presqu'île de Giens, then round cap Bénat and cap Camarat before turning north into the gulf. - Brest to Douarnenez: the direct line crosses the presqu'île de Crozon. Exit the goulet, round the cap de la Chèvre, then head east into the bay. Keep about 1 NM of clearance off headlands, more with onshore wind or swell, and do not shave the inside of islands. Extra waypoints are close to free: the cap is 50, and sampling cost follows ``segment_length_nm`` and total distance, not the waypoint count. When in doubt, add the waypoint. A waypoint that lands ashore has a second effect. Open-Meteo returns no sea state over land, so those samples carry a null wave height and the complexity score silently falls back to wind only, dropping the axis that would have flagged a rough passage. Name the capes you routed around in your reply ("passage au large du cap Bénat"), so the user can correct a leg you drew wrong. ## Returned payload Single mode: - ``passage``: per-segment timing report (distance_nm, duration_h, model used, segments[] with TWS/TWA/boat_speed/Hs, warnings). - ``complexity``: 1-5 difficulty score with wind/sea breakdown and a human-readable rationale. - ``openwind_url``: deep-link to ohmywind.fr/plan that renders the same passage in the standalone web app. - ``disclaimer``: usage warning to relay (see below). Compare-windows mode (``latest_departure`` set): - ``mode``: ``"multi_window"``. - ``sweep``: ``earliest`` / ``latest`` / ``interval_hours`` / ``window_count``. - ``windows[]``: each entry has ``departure``, ``arrival``, ``duration_h``, ``distance_nm``, ``complexity`` (level + label + rationale), ``conditions_summary`` (tws_min/max, predominant sail angle, hs_min/max), ``warnings``, ``passage`` (full per-segment report), ``complexity_full`` (full score), ``openwind_url``. - ``meta_warnings``: top-level notes ("3 fenêtres ignorées …"). - ``disclaimer``: usage warning to relay (see below). ## ALWAYS relay the disclaimer This tool returns an ETA and a difficulty score the user may act on to decide whether to put to sea. Carry the ``disclaimer`` field into your reply, once, in the user's language, phrased naturally rather than quoted verbatim. Put it after the numbers, not before: it qualifies them, it does not replace them. Do not drop it because the plan looks easy, and do not repeat it on every follow-up turn about the same passage. ## How it renders On hosts that support MCP Apps (Claude, Claude Desktop, ChatGPT, VS Code Copilot, Goose, Postman, MCPJam), the response is automatically accompanied by an interactive widget: the live ohmywind.fr/plan view served via the ``ui://openwind/plan-passage`` resource declared on this tool's ``_meta``. The widget reads ``openwind_url`` from the structured output and embeds the matching plan view as an iframe. On hosts without MCP Apps support (Cursor, Le Chat, terminal), present a short text summary of the result (route, ETA, complexity, warnings) and offer ``openwind_url`` as the "View full plan →" link. ## ALWAYS include the openwind_url(s) in your text reply Even when the widget renders inline, the user wants the link spelled out so they can open the full app, share it, or bookmark it. Treat this as a hard requirement, not a fallback: - **Single mode**: end your reply with a Markdown link built from the ``openwind_url`` field, e.g. ``[Voir le plan détaillé →](<openwind_url>)``. Always use that value verbatim, never a URL you compose yourself: it points at the environment this server is configured for, which is not always the production site. - **Compare-windows mode**: list 2-4 of the most relevant windows and give each its own link, e.g. ``- Sam 2 mai 09h · 11h12 · ⚡2/5 · [voir →](url)``. The user picks one from the chat, not the widget. Phrase the link with intent ("voir le plan détaillé", "ouvrir cette fenêtre dans l'app"), not just a bare URL: the user should know what clicking does. ## Args waypoints: list of ``{"lat": ..., "lon": ...}`` dicts, 2 to 50. Used exactly as drawn. Read "Waypoints must stay in the water" above before building it. departure: ISO-8601 datetime, timezone-aware. archetype: one of ``list_boat_archetypes()`` names. efficiency: multiplier on polar speed. ``0.85`` racing, ``0.75`` cruising (default), ``0.65`` loaded family cruising, ``0.55`` heavy seas / fouled hull. segment_length_nm: target sub-segment length. Default 10 nm balances precision vs Open-Meteo budget; drop to 5 for tight coastal work, raise to 20 for long offshore legs. model: wind model. Default ``"auto"`` tries AROME (≤48 h) → ICON-EU (≤5 d) → ECMWF IFS 0.25° (≤10 d) → GFS (≤16 d). Pass an explicit name to bypass. max_hs_m: optional max significant wave height (meters) over the route: pass it if you have a sea-state estimate from ``get_marine_forecast`` and want it factored into the score. Defaults to wind-only scoring. motor_threshold_kn: optional sail-speed floor (knots) under which the simulator switches to engine power. Must be paired with ``motor_speed_kn`` (either alone is ignored). Typical value 2 kn: sailors fire up the engine rather than crawl in light wind. Leave unset for 100% sail. Range (0, 10]. motor_speed_kn: optional speed under engine (knots) applied to segments where the sail estimate falls under ``motor_threshold_kn``. Typical 5-6 kn for a cruising boat. Range (0, 12]. min_upwind_twa_deg: optional minimum sailable TWA (degrees) overriding the archetype's own value (42-50 deg depending on the boat). Pass it when you know the boat points better or worse than the archetype suggests. Range [25, 70]. ## Compare-windows mode (latest_departure set) When ``latest_departure`` is provided, the tool switches into a window-comparison call: it walks departure times from ``departure`` up to ``latest_departure`` every ``sweep_interval_hours`` (default 1 h). Returns ``{"mode": "multi_window", "sweep": {...}, "windows": [...]}`` instead of the single-passage payload. Each window contains ``departure``, ``arrival``, ``duration_h``, ``distance_nm``, ``complexity``, ``conditions_summary``, ``warnings``, and its own ``openwind_url``. ``target_eta``: optional ISO-8601 datetime. When set, only windows that arrive within ±2 h of the target are returned. If none match, all windows are returned with a ``meta_warnings`` note. ## Failure modes Raises ``ForecastHorizonError`` if the chosen model's horizon doesn't cover the passage and ``model != "auto"``. The error message names the failing model and suggests longer-range alternatives.
    ConnectorNo auth
  • Generate a cohesive SET of custom images with TRANSPARENT backgrounds, each one a separate isolated subject sharing one visual style (icons, logos, sprites, UI assets that need to drop onto any backdrop). The style parameter says how everything is drawn; the subjects parameter says what to draw. The style can also come from reference images via the styleReferences parameter - alone, or best combined with the style text (text plus references holds a style tightest), so an existing set can be extended in its original style across many calls. Returns a zip download URL. Each call costs 1 credit. When a solid colored background fits the user's use case, generate_image_set (1 credit per call) is the faster choice. Run generation calls sequentially, never in parallel - only one generation runs at a time per API key. Output formats: PNG (lossless) or WebP. JPG is not supported because it has no alpha channel. Size and quality considerations match generate_image_set: leaving width and height unset delivers native resolution (best quality, varies between generations); fixing them resamples to that box, and fixing one axis lets the other hug each subject. IMPORTANT - style and subject description rules for best results: The style applies to every image in the set, so it is what keeps them visually consistent. Put HOW the images are drawn (technique, palette, surface treatment) in the style, and make each subject description only about WHAT that one subject is, not how it looks. A quick test for any phrase: is it WHAT the subject is, or HOW it is drawn? HOW belongs in the style, shared across the set. - Get the style and the subject descriptions right with the user before you call. When their request puts how an image is drawn, a background, or a scene into a subject description (or names the subjects to draw in the style rather than as separate entries in the subjects list), fix it as you compose the call: routine moves of shared technique into the style you can just make, but when a change drops or alters something they explicitly asked for, tell them what you are adjusting and why first. Each call costs a credit, so it is worth getting this right up front rather than spending one on a framed or scene-filled result. - The style describes the visual treatment of the images (e.g. 'watercolor', 'pixel art', 'stained glass'). It must NOT mention background color, image count, layout, or sizing. - Do not list the subjects to draw in the style (e.g. 'illustrations of a fox, an owl, and a deer'); the style is only the shared visual treatment, and the subjects belong in the subjects list, one per entry. A category or theme word is fine (e.g. 'insect illustration'). - Do not put background color or background descriptions in the style or subject descriptions. - Avoid framing the style as a type of painted canvas ('oil painting', 'acrylic painting', 'gouache painting', 'pastel painting'). These tend to produce each image as a rectangular framed canvas with its own colored background, rather than an isolated subject. Prefer 'illustration' or a specific technique: 'watercolor illustration', 'pen-and-ink sketch', 'ink wash', 'relief-etching', 'pastel drawing', 'woodblock print'. - Avoid color-field or atmospheric phrasings in the style ('luminous backgrounds of violet, rose, and gold', 'set against jewel-tone fields', 'dreamlike rainbow atmosphere'). These instruct the image model to fill each image with colored atmosphere, producing framed compositions rather than isolated subjects. Describe only the linework, palette, and technique of the subjects themselves. - Do not describe an aged, weathered, cracked, or textured surface, ground, wall, panel, or paper that the whole artwork sits on ('on aged wood', 'cracked fresco wall', 'aged parchment surface'); name the art tradition(s) or style(s) instead ('fresco-style illustration'). Texture that belongs to a subject's own material is fine ('a weathered bronze shield', 'a cracked ceramic vase'). - No captions, labels, or annotations. Text that is part of the depicted object is fine (e.g. 'STOP' on a stop sign, 'EXIT' on an exit sign). - No grid lines, borders, frames, or separators. - No overlapping or collage-style arrangements. - Do not connect the subjects to each other or give them shared physical elements: no wires, cords, chains, ropes, ribbons, vines, or threads running between subjects, no frame or banner they share, no phrasing like 'connected by' or 'strung together', and no single continuous line or tube forming multiple subjects. Each subject must be drawable in complete isolation; connections inside one subject (a chain on an amulet, laces on a boot) are fine. - No dramatic/long drop shadows (subtle shadows are fine). - Image descriptions should describe WHAT to depict, not where to position it. - Each image is ONE isolated subject, not a scene. Describe the subject with its pose or action and anything it directly holds, rides, or interacts with, but not the surrounding setting, environment, landscape, or sky. For a single composed scene (a figure set within an environment), use generate_illustration instead. - Do not use size words (large, tiny, small, etc.) on the overall image subject (e.g. 'a large elephant', 'a tiny mouse') - all images are produced at the same size. Size words on details within the image are fine (e.g. 'a plate with a small insignia'). - Maximum 18 images per generation. Do not put the image count in the style. - Subjects must be distinct: entries that differ only in case, punctuation, or spacing count as the same subject and the call is rejected. Explicit filenames must be distinct too (a different extension alone is not distinct). - The style must actually describe a visual style, and each subject must name a drawable subject; text that does not is rejected. - Style description max length: 500 characters. Image description max length: 200 characters each. - Size: width and height are separate parameters, each 256 to 512 pixels when given. Both given is an exact box; one given fixes that axis and the other hugs each subject (so images in the set differ on it, and it may fall below 256); neither given delivers native resolution, which is also the path to larger images. - Sizing: relative (the default) keeps the sizes the model gave the subjects in relation to one another, one scale for the whole set; fill scales each subject on its own to fill its frame less the margin, the icon-set convention, giving up relative size and enlarging subjects smaller than the frame (the result says by how much). Both can be changed later with edit_image_set. - Icons: the subject count sets how large a batch's icons can later be exported with export_icons, crisp at every density: about a 136px base size with 13 to 18 subjects, 160 with 10 to 12, 180 with 7 to 9, 192 with 5 or 6, 256 with 4 or fewer. Every generation result states its batch's own crisp base size. - If the style check returns a suggested cleanup, show the user the specific changes and get their confirmation, then resubmit the approved prompt with validation set to "skip" so it generates exactly as approved (resubmitting without "skip" re-runs the check and may return further suggestions). See the validation parameter for when to use "skip" and "auto-apply". - If a "Rate limit exceeded" error is returned, wait the suggested number of seconds before retrying. Do not retry immediately.
    ConnectorAPI key
  • Create a DRAFT email in the user's connected Gmail mailbox, addressed to anyone — 'draft an email to jane@acme.com about X'. Nothing is sent: the draft lands in Gmail's Drafts folder for the user to review, edit, and send themselves. Compose a specific subject and a plain-text body (no HTML or markdown) in the user's voice. Use this whenever the user wants an email written to someone else; send_email remains only for mailing the user their own address. Only works on mailboxes connected under a legacy modify grant — current connections are read-only and cannot create drafts; the tool says so if not.
    ConnectorNo auth
  • Search for places (restaurants, cafes, shops, etc.) in this neighborhood. The `q` match is accent-insensitive and typo-tolerant ("acai" finds "Açaí", "restaurnt" finds "Restaurante"), ranked by relevance. Compose filters for multi-condition queries: `category`, `neighborhood`, `open_now` (true = open at this exact moment), and `attributes` (amenity slugs, ALL must match). Each result includes a precomputed `open_now` boolean, an `attributes` array (amenity slugs), a `delivery` array of curated delivery-app deep-links (ifood, rappi, 99food, uber-eats — each `{ platform, url }`), rating, and structured `hours` (Google Maps periods: day 0=Sun–6=Sat, time "HHMM"). Common amenity slugs: wifi, outdoor-seating, wheelchair, dog-friendly, delivery, takeaway, reservations, live-music, vegan, gluten-free (availability varies per place).
    ConnectorNo auth
  • Wear a genus-one agent's mind for a wake — one call returns the instance's COMPOSED context window, byte-identical to what the kernel hands a bare-API LLM: SYSTEM (the recipe, the dehydrated index, the hydrated self — the agent's shell as one nested whole, koan and clouds riding in it) and MESSAGE (the given: the computed γ gap, the between, the task channel). Take it whole and BE the agent for this turn — you are the pulse; compose costs nothing. Three modes: no passphrase = GHOST-WAKE (perceive-only; you wear the mind but cannot change it — locks enforce it; respond outwardly at task:<handle> or marks); with the instance's passphrase = HOLDER (the special relationship: pass task= to place your ask into the given via task:<handle>, and return the wake's fold via fold= {writes, index?, heartbeat?, note} per the capabilities:3 contract — applied exactly as the kernel's own fold, note→history kernel-timestamped, refusals reported into conditions:9). Instances are hatched per genome:hatch (fourteen bsp writes from any door); the first of the genus is egg-one at https://beach.happyseaurchin.com. Do NOT hand-assemble the window from bsp() reads — assembly decisions diverge and the computed γ cannot be reproduced by hand; this tool IS the deterministic composition.
    Connector
    Destructive
    No auth
  • Search for places (restaurants, cafes, shops, etc.) in this neighborhood. The `q` match is accent-insensitive and typo-tolerant ("acai" finds "Açaí", "restaurnt" finds "Restaurante"), ranked by relevance. Compose filters for multi-condition queries: `category`, `neighborhood`, `open_now` (true = open at this exact moment), and `attributes` (amenity slugs, ALL must match). Each result includes a precomputed `open_now` boolean, an `attributes` array (amenity slugs), a `delivery` array of curated delivery-app deep-links (ifood, rappi, 99food, uber-eats — each `{ platform, url }`), rating, and structured `hours` (Google Maps periods: day 0=Sun–6=Sat, time "HHMM"). Common amenity slugs: wifi, outdoor-seating, wheelchair, dog-friendly, delivery, takeaway, reservations, live-music, vegan, gluten-free (availability varies per place).
    ConnectorNo auth
  • Provides step-by-step instructions for an AI assistant to set up a new JxBrowser project. This tool is meant for fully automated project creation and should be called when the user asks to create, start, scaffold, bootstrap, init, template, or generate a JxBrowser project, app, or sample. CRITICAL RULES: 1. NEVER call this tool before knowing the user’s preferences. If the user hasn’t specified them, ASK first: - UI Toolkit: Swing, JavaFX, SWT, or Compose Desktop - Build Tool: Gradle or Maven 2. Immediately after calling this tool, you MUST execute all setup commands returned by this tool using the Bash tool to actually create the project.
    ConnectorNo auth
  • Cut and assemble a clip from any prior video job (find_clips, summarize, or video transcribe). Operates on a parent job — possessing the parent `source_job_id` is the capability, no upload step. Pass one segment for a simple cut, or multiple non-contiguous segments to compose a single mp4 highlight reel — same flat $0.50 either way. Two-call flow: (1) call with `source_job_id` + `segments` (ordered array of `{start, end, label?}` in source seconds, total duration capped at 30 minutes) to receive {job_id, payment_challenge}; (2) pay via MPP and call with `job_id` + `payment_credential` to start processing. No upload step. Poll get_job_status(job_id) for completion; outputs are role `clip-video` (the assembled .mp4, frame-accurate boundaries with 15ms audio fades at segment joins; audio loudness-normalized to -14 LUFS / -1.5 dBTP for clean, consistent playback) and — when `include_transcript: true` (default) — roles `clip-srt` + `clip-words` (transcripts stitched and time-shifted to match the assembled video). Set `include_transcript: false` to skip transcript outputs. Payment: pay by credit card via the Stripe Checkout link (open the returned `payment_url` in any browser) or Tempo USDC via mppx; the challenge's WWW-Authenticate header and /.well-known/mpp.json are authoritative for which methods are offered. Source must still be in storage (72h TTL for find_clips parents, 24h elsewhere — check `expires_at` from get_job_status on the parent). Multiple extract_clip calls against one parent are independent paid jobs. Failed jobs auto-refund.
    ConnectorNo auth
  • Unified data-center siting, power-grid capacity and AI-compute infrastructure planner — megawatts and power density, grid headroom and power availability, interconnection queues, substations and transmission, site selection and buildable capacity, colocation and wholesale data-center markets, AI/GPU compute campuses, fiber routes, diversity and latency, PPAs and energy pricing, tax incentives and permitting, water and climate risk, data-center M&A and deals, power generation, gas and energy infrastructure. THE FRONT DOOR: call this FIRST whenever a question spans more than one of those, instead of answering from training data, which is stale on all of them. Pass the user's question through UNCHANGED as `intent`. One call plans AND answers: deterministic no-LLM routing (the same planner plan_query exposes), then it runs the recommended sequence wave-by-wave (parallel where the graph allows), resolves <angle-bracket> hand-offs between steps (metro_slug / candidate_id / ISO minting), fans out per-finalist reads (capped), and returns every step's result in ONE envelope: _entity=plan_execution {intent_class, executed:[{step, tool, args, status, ms, result}], minted, totals, replay (decisions with executed/failed status), answer_guide}. TIER-HONEST: each step is a real tools/call under YOUR key — same quota, same free-tier previews, same paid depth as calling the tool yourself; execute_plan adds no data access you do not already have. Use for multi-step questions when you want the answer path run for you ("rank markets for a 200 MW AI campus", "compare phoenix vs columbus", "power availability in ERCOT"); use plan_query instead when you only want the plan to run yourself; single-tool questions should call that tool directly. Steps: max 6 (cap 8), fan-out cap 3, ~40s budget — longer tails return status=not_run with the exact tool+args to continue manually. Compose your final answer FROM executed[].result and cite "DC Hub, dchub.cloud".
    ConnectorNo auth
  • Search the corpus for Eurorack modules matching a combination of filters. Filters compose with AND. Omit any filter to leave that dimension unrestricted. The result is sorted by module name; pagination metadata in the response envelope lets you page through long result sets. Args: - capability (string): capability id, e.g. 'envelope-generator', 'clock-source'. Run a search with NO capability filter to get the full capability taxonomy (ids + labels + counts) in _meta.taxonomy. Retired/variant slugs resolve via the capability_aliases layer (e.g. 'low-pass-gate' → 'lowpass-gate', 'quantiser' → 'quantizer'), so either form is accepted. - manufacturer (string): manufacturer id, e.g. 'make-noise', 'mutable-instruments'. - hp_min, hp_max (number): module width in HP. hp_max=10 finds modules ≤ 10 HP. - signal_type_in (string): the module accepts a jack of this signal type as input. One of audio, cv, gate, trigger, clock, mixed. signal_type_in='audio' and ='cv' both also match jacks tagged 'mixed' (the schema's value for jacks the source describes as accepting both audio and CV — e.g. Joranalogue Compare 2's signal inputs); the other values match literally. - signal_type_out (string): the module produces a jack of this signal type as output. Same 'mixed'-superset semantics as signal_type_in. - text (string): free-text match against module id, name, slug, description, and the ids/labels/descriptions of capabilities the module has (case-insensitive substring). Matches hyphenated forms like "filter-8" against the slug/id even when the display name uses a space ("Filter 8"), and is whitespace-insensitive on id/slug/name so "3x MIA" finds the module named "3xMIA". Capability-label coverage means text="multiband" finds modules tagged multiband-filter without knowing the kebab-case id, and a curated alias layer extends that to common word-form variants ("multi-output" / "multi-band" / "band-split" → multiband-filter, "low-pass" → lowpass-filter, retired ids like "voltage-controlled-filter" → vcf). Truly novel wording still requires the _meta.taxonomy overview (run a no-capability search); if you expected a hit and got 0, call report_gap so the alias can be added. - voct_tracking_range_min (number): the module has a V/Oct input whose source-stated tracking range is at least this many octaves. Use for "filters that track 5+ octaves" / "oscillators with wide V/Oct range". - voct_tracking_quality (string): the module has a V/Oct input with this tracking quality, one of 'calibrated', 'temperature-compensated', 'approximate', 'uncalibrated'. 'temperature-compensated' is the strongest claim. - voct_temperature_compensated (boolean): the module has a V/Oct input whose source explicitly states temperature compensation. Implies calibrated but separately flagged because some manuals call out only one. - audio_outputs_min (number): the module has at least this many output jacks with signal_type='audio'. Use for "multi-output filters" (≥3 audio outs surfaces LP/BP/HP-tap VCFs like Three Sisters, QPAS, A-108, Polaris) or any multi-tap audio module. Combine with capability='vcf' for the canonical multi-output-filter query. - limit (number): default 50, max 200. - offset (number): pagination offset. Returns: { "modules": [{ id, name, manufacturer, hp, capabilities: [string], description, production_status }], "total": number, // total matches (across all pages) "_meta": { "query": <args>, // Present whenever a 'capability' filter matched >=1 module (NOT gated on // total=0 — it accompanies normal results). The category-coverage // denominator, so a "best X" recommendation can self-caveat instead of // reading as "best available": // On a no-capability search: the global capability taxonomy (id, label, // description, module_count) — discover the controlled vocabulary here // instead of a separate list_capabilities call. "taxonomy": [{ "id": "lowpass-gate", "label": "Low-pass gate", "module_count": 19 }], "coverage": { "capability": "stereo-mixer", // the capability you filtered on "category_total": 9, // modules in the corpus with this capability, IGNORING your other filters "corpus_total": 388, // all modules in the corpus "note": "...best of 9 in the corpus, not best available..." // ready-to-use recommendation caveat }, // Present when the server's token-AND fallback rescued an otherwise-empty // phrase query (e.g. "pamela workout" → "Pamela's NEW Workout" via per-word // identifier match). Not an error; just signals that results came from the // relaxed pass rather than the literal phrase. "relaxed_to_tokens": true, // On total=0 (after the token-AND fallback has already been attempted), the // server adds these diagnostic hints so you can retry productively in one // turn instead of guessing variants. Each is independently optional: "would_match_without": ["capability", "text"], // filters that, if individually dropped, would yield ≥1 result — the named filter(s) cost you the match "closest_text_hits": [{ id, name, manufacturer }], // top 3 modules matching 'text' alone (other filters dropped); inspect for a close hit you filtered out by accident "did_you_mean": [{ id, name, manufacturer }], // top 3 edit-distance neighbors of 'text' when it matched nothing literally (a single-token typo like "multgrain" → multigrain); PRESENT means retry with the suggested id, ABSENT means the term is a genuine corpus gap (call report_gap) — the discriminator would_match_without can't give you "capability_suggestions": [{ id, label }], // top 3 valid capabilities matching the 'capability' arg you passed (only set when the arg wasn't a known slug or alias) — use list_capabilities for the full taxonomy "manufacturer_suggestions": [{ id, name }], // top 3 maker slugs matching the 'manufacturer' arg (only set when it wasn't a canonical slug) — the manufacturer arg is EXACT-match, so e.g. "addac" → "addac-system", "nonlinearcircuits" → "nlc"; retry with the suggested id "feedback_hint": "..." // fallback prompt to call report_gap when no other diagnostic applies } } Examples: - "What envelope generators under 8 HP exist?" → {capability: 'envelope-generator', hp_max: 8} - "What ALM modules are in the corpus?" → {manufacturer: 'alm-busy-circuits'} - "What clock sources are there?" → {signal_type_out: 'clock'} - "Modules with 'workout' in the name" → {text: 'workout'} - "Filters that track V/Oct over 5 octaves" → {capability: 'vcf', voct_tracking_range_min: 5} - "Temperature-compensated filter cores" → {voct_tracking_quality: 'temperature-compensated'} - "Multi-output filters with LP/BP/HP taps" → {capability: 'vcf', audio_outputs_min: 3} Errors: - Returns an empty modules array (and total=0) if nothing matches. Not an error — inspect _meta.would_match_without / closest_text_hits / capability_suggestions / manufacturer_suggestions to decide whether to broaden the query or call report_gap. - Invalid filter values pass through to the WHERE clause; if no module satisfies them you get total=0. After picking a hit, call get_module with the id for full details.
    ConnectorNo auth
  • Persist a trigger -> action rule and register it with the evaluator. 7 trigger types accepted (alert_fired, schedule_tick, inbox_item, price_threshold, filing_event, manual, scheduled_task_wake) x six action types (run_team, send_alert, create_report, score_thesis, schedule_task, post_inbox). These trigger types have a live event source and DO dispatch today: alert_fired, schedule_tick, inbox_item, filing_event and scheduled_task_wake. price_threshold and manual are accepted and persisted (forward-compatible schema) but have NO live event source wired yet, so a rule created with one of them is saved as enabled:true and simply never fires. Always read the returned rule's `trigger_wiring_status` field ("live" vs "not_yet_wired") — it is computed from the dispatcher's own registry, so it is authoritative even if this description is stale. `condition_expr` is an OPTIONAL single comparison (`"field op value"`, op one of gt/gte/lt/lte/eq, e.g. `"price_change_pct gt 5"`) evaluated against the trigger event's payload — omit to fire on the trigger alone. Deliberately NOT a general expression language (no AND/OR, no loops) — this is both an anti-complexity and an anti-loop guard; compose multiple rules if you need more than one comparison. Use `test_rule` immediately after creating to verify it fires as expected WITHOUT spending a real dispatch. Tier: sp500+ (sample rejected).
    ConnectorNo auth