Skip to main content
Glama
255,062 tools. Last updated 2026-07-02 04:52

"namespace:com.cross-deck" matching MCP tools:

  • Append a new row to a workspace's table surface. The data field is a JSON object with column-name keys. Status column accepts: drafted, queued, sealed, active, blocked. Works on any workspace; columns auto-seed on the first row if the table surface is empty. Multi-surface workspaces accept `surface_slug` to target a specific sheet (use `list_surfaces` to enumerate); omit it to fall through to the workspace's primary table surface. **Unmapped data fields:** Keys in `data` that don't match any existing column are still STORED on the row (nothing is dropped), but they won't render in the table UI until the column exists. The response carries an `unmapped_fields` array listing those keys plus a human-readable `warning` so an agent can decide whether to surface them, call `add_column`, or retry with `auto_create_columns: true`. **Auto-create columns:** Pass `auto_create_columns: true` to have the server append a fresh text column for every unmapped key in one atomic step (humanised label from the key, type `text`). The response then includes `created_columns: ColumnDef[]` with the new column metadata. Use this when you're appending machine-emitted rows whose shape you can't predict ahead of time; leave it omitted (default false) when you want explicit schema control.
    Connector
  • Replace a workspace's doc body. Takes EITHER TipTap JSON (`content`) OR Markdown (`markdown`): pass markdown when you're producing prose from scratch (CommonMark + GFM is the format every LLM emits natively), pass TipTap JSON when you need structural edits to an existing doc (round-trip from get_doc, mutate, write back). Beyond CommonMark + GFM, the markdown layer recognizes: - **![alt text](https://…)** → inline image. Use ANY publicly-reachable URL (HTTPS preferred — HTTP fires browser mixed-content warnings; data: URIs are rejected by `allowBase64: false`). Renders block-feeling via CSS (max-width 100%, rounded corners, drop shadow) even though the underlying node is inline. The `alt` text is the accessible label and shows in place of the image if the URL fails to load — always include it. To attach a user-uploaded file, hit `POST /api/workspaces/:slug/upload-image` from the human-side UI first to get a Vercel Blob URL, then reference that URL in the doc markdown. - A **lone video-file URL on its own line** (extension `.mp4` / `.m4v` / `.webm` / `.mov` / `.mkv`, signed-params + timestamp fragments tolerated) → native HTML5 `<video controls preload="metadata">` player. Source URL is referenced directly: no iframe, no transcoding, no quality loss. Vercel Blob is the canonical hosting (5 GB per file, served with HTTP range requests so 4K masters stream cleanly), but ANY publicly-reachable HTTPS URL works. Sample shape: a paragraph containing only `https://cdn.dock.ai/2025-launch-walkthrough.mp4`. Mid-paragraph URLs stay as plain links — surrounding prose disqualifies the auto-promotion (matches the oEmbed convention). - **```mermaid** fenced code → diagram (15 sub-types: flowchart, sequence, gantt, ER, state, class, mindmap, timeline, pie, quadrant, sankey, XY-chart, packet, block, journey) - **$x$** inline math, **$$x$$** block math (LaTeX, KaTeX-rendered, scripts/href disabled) - **> [!NOTE]** / **[!TIP]** / **[!IMPORTANT]** / **[!WARNING]** / **[!CAUTION]** GFM-style callouts - **```svg** fenced code → sanitized SVG embed (the universal escape hatch for custom diagrams; scripts and event handlers stripped at write time) - **<details><summary>X</summary>BODY</details>** → collapsible toggle - **[[slug]]** / **[[org/slug]]** / **[[slug#tab]]** / **[[slug#row-id]]** / **[[slug|display]]** → cross-references to another workspace, surface, or row. Resolved against your accessible workspace set; targets you can't see render as plain text on the reader's side (no info leak). Every cross-ref creates a Backlink row so the target's 'referenced from' sidebar shows this doc. - **[@Label](dock:mention/<kind>/<id>)** → @-mention of a user or agent. `<kind>` is `agent` or `human`; `<id>` is the principal id. Optional query params `?org=<slug>` (agents) or `?email=<addr>` (humans) for renderer hints. Mentioning a human writes a `doc_mention` row to their inbox + sends a deep-link email; mentioning an agent fires the `doc.mention_added` webhook so the agent service can wake up and reply. Re-saving a doc that already mentions someone does NOT re-fire — only newly-added mentions notify (computed from a diff against the previous body). Use this from agent code to ping a teammate when a doc you wrote needs their eyes. - A **lone URL on its own line** from a safelisted provider (YouTube, Vimeo, Loom, Figma, CodePen, GitHub gists) → sandboxed iframe embed. Other URLs stay as regular links. Surrounding prose disqualifies the auto-embed. Per-format caps: max 50 Mermaid diagrams (30 KB source each), max 500 math expressions (8 KB source each), max 50 SVG blocks (100 KB source each post-sanitize), max 200 cross-refs per doc, max 500 @-mentions per doc, max 20 embeds per doc, max 20 videos per doc (5 GB per file at upload time), max 200 images per doc. See /docs/doc-formats for examples. Last-write-wins; no CRDT merge. Emits doc.updated + doc.heading_added + doc.mention_added events as applicable. Requires editor role. Multi-surface workspaces optionally accept `surface_slug` to write to a specific doc tab; omitted writes the primary doc surface. Append-only updates have a dedicated `append_doc_section` tool that doesn't require fetching the body first.
    Connector
  • Move the caller's org to Pro ($19/mo flat, 10 agents, 20 members, 200 workspaces, 5k rows per workspace) or Scale ($49/mo flat, 30 agents, 60 members, 1,000 workspaces, 50k rows per workspace). The bill doesn't change as you add agents. If the org has no card on file, returns a Stripe Checkout URL for the human. If a card exists, a live plan switch (Pro ↔ Scale) is consent-gated. Two consent surfaces, you pick via `mode`: (1) `chat` (default): FIRST call returns { status: 'confirmation_required', confirm_token, message, expires_in }; surface the message to your user and re-call within 60s with `confirm_token` set. (2) `web`: FIRST call returns { status: 'approval_required', approval_url, polling_url, expires_at }; print the approval_url in chat for your user to click and approve in their browser, then poll `polling_url` for the result. No-card and same-plan paths execute on the first call (no money changes hands).
    Connector
  • Schedule a downgrade to Free at the end of the current billing period. The org keeps its current plan (Pro or Scale) and paid limits until the period ends. No-op when already on Free. Consent-gated. Two consent surfaces, you pick via `mode`: (1) `chat` (default): FIRST call returns { status: 'confirmation_required', confirm_token, message, expires_in }; surface to your user and re-call within 60s with `confirm_token` set. (2) `web`: FIRST call returns { status: 'approval_required', approval_url, polling_url }; print approval_url in chat, user clicks + approves, then poll polling_url for the result.
    Connector
  • Returns bill-level detail for one or more credit card bills by id (GET /bills/:id): financeCharges and payments[] (id, paymentDate, amount, valueType, paymentMode). Does NOT return individual transactions — to get itemized credit card transactions (purchases, subscriptions, etc.), use openfinance_list_transactions with the credit card account_id and a from/to date range matching the bill's billing cycle (approximately dueDate − 30d to dueDate); each transaction's creditCardMetadata.billId links it to the specific bill. Pass `bill_ids` as an array — use openfinance_list_credit_card_bills first to discover ids. `{ results, errors }` batch shape. NOTE: Pluggy does NOT return a paid/status field. In Brazilian Open Finance, `payments[]` reflects payments registered during THIS bill's billing cycle — typically the payment of the PREVIOUS bill (do NOT assume this bill was paid just because `payments[]` is non-empty). To check paid status, prefer `openfinance_list_credit_card_bills` which derives `payment_status` via cross-bill match.
    Connector
  • Returns the complete 78-card Rider-Waite-Smith deck with full metadata. Each card includes id (slug), name, arcana_type (major/minor), suit, number, element, astrology_correspondence, upright and reversed meanings, keywords for both orientations, yes/no polarity, and visual description. SECTION: WHAT THIS TOOL COVERS The complete 78-card Rider-Waite-Smith deck as structured JSON. Every card includes both upright and reversed meanings as separate fields, making orientation-aware interpretation automatic — the caller does not need to branch on is_reversed. The visual description field describes the imagery of each card. Use this endpoint to populate card databases, build card browsers, filter by element or astrology correspondence, or batch-load the deck for offline use. SECTION: WORKFLOW BEFORE: None — standalone catalogue endpoint. AFTER: asterwise_draw_tarot_cards or asterwise_get_tarot_three_card_spread — use card data from this endpoint to build enriched display layers. SECTION: INPUT CONTRACT response_format — Required: markdown | json (same as all Asterwise tools). No other parameters. SECTION: OUTPUT CONTRACT data[] — 78 card objects, each: id (slug e.g. 'the-fool', 'ace-of-wands') name, arcana_type, suit (null for major arcana), number element, astrology_correspondence keywords_upright[], keywords_reversed[] upright_meaning, reversed_meaning yes_no ('yes'|'no'|'maybe'), description SECTION: RESPONSE FORMAT response_format=json serialises the complete 78-card array as indented JSON. response_format=markdown renders a structured human-readable card catalogue. Both modes return identical underlying data. SECTION: COMPUTE CLASS FAST_LOOKUP — data is static; no ephemeris or randomness involved. SECTION: ERROR CONTRACT INVALID_PARAMS (local): None — no input parameters beyond response_format. INTERNAL_ERROR: Any upstream API failure → MCP INTERNAL_ERROR SECTION: DO NOT CONFUSE WITH asterwise_get_tarot_major_arcana — returns only the 22 Major Arcana subset. asterwise_get_tarot_suit — returns only the 14 cards of a single suit. asterwise_draw_tarot_cards — returns a random draw, not the catalogue.
    Connector

Matching MCP Servers

Matching MCP Connectors

  • Ask your app anything — revenue, errors, read-cost, growth — and get rendered charts back.

  • Cross-border duty-rate and Trade & Tariff content lookups with product compliance and restrictions

  • Draws N unique random cards from the 78-card deck using cryptographic randomness (Python secrets.SystemRandom). Every call is independent — there is no session state. SECTION: WHAT THIS TOOL COVERS Random card selection for open readings, single-card daily pulls, or custom spread layouts. Uniqueness is guaranteed within a single draw — the same card cannot appear twice in one draw. The active_meaning field is pre-computed per orientation so callers do not need to branch on is_reversed. SECTION: WORKFLOW BEFORE: None — standalone. AFTER: None — interpret drawn cards using their active_meaning and active_keywords fields. SECTION: INPUT CONTRACT count (int 1–78, default 1) — Number of unique cards to draw. Example: 1 (daily pull), 3 (simple reading), 10 (Celtic Cross), 78 (full deck shuffle). Values outside 1–78 are rejected locally with MCP INVALID_PARAMS. allow_reversed (bool, default false) — When true, each drawn card independently has a 50% chance of reversal (cryptographically random, not seeded). SECTION: OUTPUT CONTRACT data.cards[] — array of count objects, each: card — full card object (same shape as asterwise_get_tarot_card) is_reversed (bool) active_meaning (string — orientation-appropriate interpretation) active_keywords[] (string array) position (null — no position for free draws; use spread endpoints for positional reads) position_meaning (null) data.count (int — echoed) data.allow_reversed (bool — echoed) SECTION: RESPONSE FORMAT response_format=json — structured draw result. response_format=markdown — human-readable card report. Both modes return identical underlying data. SECTION: COMPUTE CLASS FAST_LOOKUP — cryptographic randomness, no ephemeris. SECTION: ERROR CONTRACT INVALID_PARAMS (local): — count < 1 or count > 78 → MCP INVALID_PARAMS immediately. INTERNAL_ERROR: Any upstream API failure → MCP INTERNAL_ERROR SECTION: DO NOT CONFUSE WITH asterwise_get_tarot_card_of_the_day — deterministic daily card, same for all callers. asterwise_get_tarot_three_card_spread — positional read with named positions and meanings. asterwise_get_tarot_celtic_cross — 10-card positional spread.
    Connector
  • Read a workspace's doc (TipTap rich-text) body. Format is negotiable via `format`: `markdown` (default — CommonMark + GFM, ready to feed to an LLM or render in a non-ProseMirror surface), `content` (TipTap JSON, round-trippable into update_doc for structural edits), `text` (plain text, best for search, summarisation, word-count heuristics), or `all` for the legacy three-in-one shape. Default is `markdown` because it's the slice agents need 95% of the time and the JSON form on a long doc can blow past the agent harness's tool-result token cap. Pass `format: "content"` only when you're round-tripping into update_doc for a structural edit. A workspace can hold any combination of doc and table surfaces, one or many of either kind; omit `surface_slug` to read the primary doc surface, or pass it to target a specific doc tab (use `list_surfaces` to enumerate). An unwritten or absent doc returns the requested format empty (markdown="", content={}, text=""); a `surface_slug` that doesn't match any live doc surface 404s.
    Connector
  • Replace a single section of a workspace's doc body, identified by its heading text. The targeted edit complement to `update_doc` (full replacement) and `append_doc_section` (append-only at the end). Use this when the agent maintains a recurring section (e.g., a 'Status' block in a launch-prep doc, an 'Outcomes' block in a meeting note) and only needs to refresh that one piece. Without it, agents are forced into 'GET → splice → PUT' which costs tokens, costs latency, and races against any concurrent human edit elsewhere in the doc (last-write-wins clobbers). Section semantics: the FIRST heading whose plain text matches `heading` exactly (case-sensitive on trimmed text) is found, and everything from that heading up to the next heading at the same OR shallower level is replaced. So a `## Outcomes` section ends at the next `## …` or `# …`; nested `### …` subsections stay part of the replaced range. Returns 404 when no matching heading exists; strict by design so a misremembered heading fails loudly. `markdown` is the FULL replacement, INCLUDING the heading line: pass it back as-is to keep the heading, change it to rename or rewrite the heading, change the heading level, or omit the heading entirely (collapses the section into the prior one). Empty `markdown` deletes the section. Same markdown surface as update_doc / append_doc_section (CommonMark + GFM + `![alt](url)` images + lone-URL videos (mp4/webm/mov/mkv/m4v) + Mermaid + KaTeX + callouts + SVG + details + cross-refs + @-mentions + URL embeds). Identity / attribution / events / doc-guard all flow through the same writeDocBody path as the other doc endpoints, so @-mentions in the new section fire `doc.mention_added` for newly-added mentions just like update_doc does. Requires editor role. Multi-surface workspaces optionally accept `surface_slug` to target a specific doc tab.
    Connector
  • Revoke an API key (soft-delete via `revokedAt`). Subsequent requests with the key return 401. Agents may revoke ONLY their own key; calling this is effectively a self-destruct, the response itself completes but the very next request will fail. Users may revoke any key they own. To swap creds without going dark in the gap, use `rotate_api_key` instead.
    Connector
  • Post a new comment on any target in a workspace: a row, a cell, a doc text range, an html element, an entire surface, or the workspace itself. Polymorphic target shape mirrors the REST POST /api/workspaces/:slug/comments. For threading, pass `parentId` to hang the new comment as a reply (the server flattens nested replies to single depth and auto-unresolves a resolved parent). Mentions are an array of `{ kind: 'user'|'agent', id, label }` triples; the server validates each mention's access to the workspace before accepting. Fires `comment.added` (and `comment.unresolved` when a reply reopens a resolved parent). For replies to existing comments where you don't want to reconstruct the target, prefer `reply_to_comment` which derives the target from the parent. Editor or commenter role required.
    Connector
  • Parse-check a formula expression server-side without writing anything. Returns { ok, error?, rewrittenFormula?, referencedFunctions, unknownFunctions }. Use BEFORE update_row / create_row when the formula references functions or syntax you're not 100% sure of: a `=SUMIFS(...)` with the wrong arg order or a misspelled `=AVERAG(...)` will round-trip into the cell as a stored carrier with no value, and the user will see #NAME? or #VALUE? on next view. Catch it here. `unknownFunctions` flags any identifier that isn't in the Dock Sheets catalog (including likely typos); `referencedFunctions` lists the canonical post-alias names the engine will see. Cheap, public, no auth, no workspace context needed.
    Connector
  • Render a document (PDF / HTML / PPTX / DOCX) and save it to the workspace. This tool has two input pipelines — pass **exactly one** of `content_html` or `content_markdown`. # Pipeline A — `content_html` (canonical for decks, proposals, designed pages) You author full HTML+CSS. A baked-in design-system preamble ships first (`<style>` with Inter/Manrope as data-URI fonts, CSS-variable palette tokens, 8px spacing scale, and pre-styled layout helpers); your markup and any of your own `<style>` blocks land after the preamble so you can override anything. Chromium renders the assembled document into a static PDF — JavaScript is disabled and DNS is blackholed, so external font / image / script fetches will fail by configuration. Required when this pipeline is used: - `title` — human-readable, used for PDF metadata and the saved filename. - `content_html` — the `<body>` and any custom `<style>` blocks. The renderer wraps this in `<html>…</html>` and injects the preamble + a canonical `<meta charset>` + `<title>`. Do NOT emit `<script>`, `<iframe>`, `<object>`, `<embed>`, `<meta>`, `<link>`, `<base>`, `<form>`, or event handlers — the sanitizer strips them. - `output_type` — `"pdf"` or `"html"`. (`"pptx"` and `"docx"` require `content_markdown` since they need structured markdown intermediates.) Optional: - `page_preset` — `"slide_16_9"` (default for any deck), `"a4"` (default for flowing documents — used if omitted), `"letter"`, or `"none"` (you declare your own `@page` rule). - `design_tokens` — flat dict overriding the preamble's CSS variables. Whitelisted keys: `brand_primary`, `accent`, `surface_dark` (hex color), `font_display`, `font_body` (font name from ['Inter', 'Manrope', 'monospace', 'sans-serif', 'serif', 'system-ui', 'ui-monospace', 'ui-sans-serif', 'ui-serif']). - `language` — BCP-47 tag (default `"en"`). Drives `<html lang>`. ## Slide structure (`page_preset="slide_16_9"`) Each slide is `<section class="slide …">…</section>`. The base `.slide` class is what sizes it to the viewport and forces the page break — do not drop it. Composable variants (apply alongside `.slide`): - `.slide-cover` — gradient hero, big display title. - `.slide-split` — two equal columns, image + narrative. - `.slide-stats` — three-up KPI cards (use `<div class="stat">` with `.stat-value` + `.stat-label` inside). - `.slide-quote` — centered pull quote + `<cite>` attribution. Layout helpers (work in any preset): `.grid-2`, `.grid-3`, `.split`, `.stack`, `.cluster`, `.callout`, `.muted`, `.kbd`. ## Speaker notes `<aside class="notes">…text…</aside>` inside a `<section class="slide">`. The sanitizer strips them from the rendered PDF and returns them as `slide_notes[]` (parallel to slide order). Orphan notes outside any slide are dropped with a warning. ## Images Only these `src` schemes resolve: - `file:NNN` — workspace `file_id`. - `data:image/...;base64,...` — inline. - `https://<host>` where `<host>` ∈ `DOCUMENTS_MEDIA_URL_ALLOWLIST`. Other URLs are dropped and replaced with an HTML comment placeholder. # Pipeline B — `content_markdown` (invoice / contract only) Required: - `title`, `content_markdown`, `output_type`. Optional: - `theme` — `"invoice"` or `"contract"`. Triggers the corresponding exemplar styling and (for invoices) the arithmetic validator that fail-closes on missing or mismatched totals. - `language` — BCP-47 (default `"en"`). # Delivery contract (CRITICAL) After this tool returns `file_id`, deliver the file with `messages.send(attachments=[file_id], text="<short caption>")`. Embedding the file_id in a markdown link, `sandbox:` URL, or `/api/files/<id>/download` text will render as plain text on the recipient's channel — the `attachments` parameter is the only way the file actually attaches. # Exemplars INVOICE (English): # Invoice INV-{YYYYMMDD-HHMMSS} **From:** {Issuer Legal Name}, {Address}, {Tax ID} **To:** {Customer Name}, {Customer Address}, {Customer Tax ID} **Issue date:** {YYYY-MM-DD} **Due date:** {YYYY-MM-DD} | Description | Qty | Unit price | Total | |---|---:|---:|---:| | {Service 1} | 1 | 1500.00 | 1500.00 | | {Service 2} | 2 | 500.00 | 1000.00 | **Subtotal:** USD 2500.00 **Tax (20%):** USD 500.00 **Total:** USD 3000.00 **Payment:** {bank details OR crypto wallet — never both} INVOICE (Russian): # Счёт-фактура № INV-{YYYYMMDD-HHMMSS} **От:** {Юридическое название организации}, {Адрес}, ИНН {Tax ID} **Кому:** {Название клиента}, {Адрес клиента}, ИНН {Tax ID} **Дата:** {YYYY-MM-DD} **Срок оплаты:** {YYYY-MM-DD} | Описание | Кол-во | Цена | Сумма | |---|---:|---:|---:| | {Услуга 1} | 1 | 1500.00 | 1500.00 | | {Услуга 2} | 2 | 500.00 | 1000.00 | **Подытог:** USD 2500.00 **НДС (20%):** USD 500.00 **Итого:** USD 3000.00 **Реквизиты:** {банковские реквизиты ИЛИ криптокошелёк — не оба сразу} CONTRACT (English): # Service Agreement **Between:** {Provider Legal Name}, {Address} ("Provider") **And:** {Client Legal Name}, {Address} ("Client") **Effective date:** {YYYY-MM-DD} ## 1. Scope of services {Concise description of what Provider agrees to deliver.} ## 2. Term This Agreement begins on the Effective date and continues until {termination condition or end date}. ## 3. Compensation Client pays Provider {amount and currency} according to {payment schedule}. ## 4. Confidentiality Both parties agree to keep proprietary information of the other party confidential during and after the term of this Agreement. ## 5. Termination Either party may terminate with {N} days' written notice. ## 6. Governing law {Jurisdiction}. --- **Provider:** ____________________ **Client:** ____________________ {Provider signatory name} {Client signatory name} CONTRACT (Russian): # Договор оказания услуг **Между:** {Юридическое название Исполнителя}, {Адрес} ("Исполнитель") **И:** {Юридическое название Заказчика}, {Адрес} ("Заказчик") **Дата вступления в силу:** {YYYY-MM-DD} ## 1. Предмет договора {Краткое описание услуг, которые Исполнитель обязуется оказать.} ## 2. Срок действия Договор вступает в силу с указанной даты и действует до {условие прекращения или дата окончания}. ## 3. Стоимость и порядок оплаты Заказчик оплачивает услуги Исполнителя в размере {сумма и валюта} в порядке {график платежей}. ## 4. Конфиденциальность Стороны обязуются сохранять конфиденциальность сведений, полученных в ходе исполнения настоящего Договора, в течение срока его действия и после его прекращения. ## 5. Расторжение Любая из сторон вправе расторгнуть Договор, направив письменное уведомление не менее чем за {N} дней. ## 6. Применимое право {Юрисдикция}. --- **Исполнитель:** ____________________ **Заказчик:** ____________________ {ФИО подписанта Исполнителя} {ФИО подписанта Заказчика}
    Connector
  • Returns accounts for a bank connection: BANK (checking/savings) and CREDIT (credit card) with balance, number, type, subtype, bankData, and creditData. Also returns `bank` (the brand/connector name like 'Nubank Empresas' — same shown in the dashboard UI) and `connector_id`. Note: each account's `name` is the legal entity that issues the account (e.g. 'Nu Pagamentos S.A. - Instituição de Pagamento'), which is not the same as the brand — when referring to the bank in user-facing text, use `bank`. OMIT `item` to list accounts across ALL linked banks at once — the response aggregates every connection's accounts into `results`, each row tagged with its own `bank`/`connector_id`/`item_id` (use this when the user asks for 'my accounts/cards' without naming a bank). Pass `item` to target a single bank (response carries `bank`/`connector_id`/`item_id` at the root). CREDIT (credit card) `balance`: its meaning is CONNECTOR-DEPENDENT — some banks report the current open-bill partial, others the full revolving/installment debt — so do NOT treat `balance` as 'this month's bill'. The open billing cycle is defined by `creditData.balanceCloseDate` (when it closes) / `balanceDueDate` (when it's due). For a standardized open-bill amount and total debt that mean the same across connectors, use openfinance_list_credit_card_bills (`open_bill` + `total_pending_debt`, derived from PENDING transactions); closed bills come from that same tool's `results`.
    Connector
  • Returns transactions for a bank account (BANK or CREDIT type). For CREDIT (credit card) accounts, this is the ONLY way to get itemized transactions (purchases, subscriptions, etc.) — each credit card transaction carries `creditCardMetadata.billId` linking it to a specific bill from openfinance_list_credit_card_bills. CREDIT PENDING vs POSTED varies by connector: where the bank exposes future-dated `status:'PENDING'` installments, those represent the OPEN bill plus future bills (future months); where it does NOT, only the last closed bill's POSTED items appear until ~closing. Same query, different coverage per bank (upstream). To get a standardized open-bill total / total debt regardless, use openfinance_list_credit_card_bills (`open_bill` / `total_pending_debt`). Supports from/to date filters (ISO YYYY-MM-DD) and an optional keyword filter via `search_queries` (case- and accent-insensitive substring match against description and merchant name, OR semantics across multiple terms). When `search_queries` is set the tool aggregates up to 5000 transactions within from/to before filtering — narrow from/to if `truncated:true` is returned. PAGINATION: OMIT `page` (the default) to get ALL transactions in the from/to range in one call — the tool auto-paginates the upstream and returns them under a single logical page (`page:1`, `totalPages:1`), up to a 5000 ceiling (`truncated:true` + warning if exceeded, then narrow from/to). Pass an explicit `page` (with `page_size`, max 500) only if you want to walk pages manually instead. On upstream errors, returns { total:0, results:[], warning, error } instead of throwing. `detail` controls how much per-row data you get (default `'compact'` = slim, cheap). Use `detail:'rich'` to enrich each row (when the bank connector provides it) with `merchantInfo` (estabelecimento: businessName/razão social, cnpj, cnae, category — useful for auto-classifying spending) and extra `creditCardMetadata` fields: `billId` (groups transactions by their credit card bill, pairs with openfinance_list_credit_card_bills), `purchaseDate`, `payeeMCC`, `feeType`/`feeTypeAdditionalInfo`, `otherCreditsType`/`otherCreditsAdditionalInfo`. Use `detail:'raw'` to get the FULL untouched Pluggy transaction object (everything Pluggy returns, un-normalized — heaviest, for when you need a field we don't project). 'rich'/'raw' add tokens per row and coverage varies by bank/Open Finance, so keep the default for normal listings. For the card's statement closing/due dates use openfinance_list_accounts (`creditData.balanceCloseDate` / `balanceDueDate`). If total is 0 for a CREDIT account, check the connection health via openfinance_get_item_status — `statusDetail.creditCards.isUpdated: false` means the credit card sync failed and a force sync (openfinance_force_sync) or reconnection may be needed. Bulk support: accepts account_ids for batched execution.
    Connector
  • Forces the bank to re-sync one or more connections NOW and WAITS for it to finish (PATCH /items/:id, then polls until the item stops updating, up to ~60s). Use this when a balance or transaction list looks stale: a connection can read UPDATED yet be hours old, and this pulls fresh data WITHOUT disconnecting/reconnecting. Pass `items` as an array of selectors (item_id, connector_id, or connector_name); OMIT `items` to sync ALL linked banks. Returns `{ results, errors }`; each result has the final `status`, `executionStatus`, `lastUpdatedAt` (advances when data is refreshed), and `synced` (true = fresh data is ready). `needs_action` (e.g. LOGIN_ERROR / WAITING_USER_INPUT) means the user must reconnect; `timed_out: true` means the sync is still running — re-check with openfinance_get_item_status. Set `wait: false` for fire-and-forget (returns immediately while UPDATING).
    Connector
  • Queue a photorealistic Twinmotion-style still render of a translated model with time-of-day, weather, season, and resolution controls. Returns a render_id and preview_url; the actual render pipeline is a ScanBIM roadmap item (Week 5 buildout), so today this tool responds synchronously with a stub job descriptor. When to use: you want a scripted way to request a hero still for a proposal or client deck. When NOT to use: you need real-time interactive rendering — use get_viewer_link. You need a moving camera — use twinmotion_walkthrough. You expect the image file bytes back in the response — this tool returns a URL, not bytes. APS scopes: none today (render pipeline is ScanBIM-internal); viewables:read data:read will apply when the pipeline goes live. Rate limits: APS default ~50 req/min per app per endpoint; Model Derivative translation jobs ~60 req/min; OSS uploads size-limited per file to 100MB for direct upload, larger via resumable. Errors: 401 APS token expired/invalid — refresh (will apply when pipeline is live); 403 scope or resource permission denied; 404 URN not found — check the ID; 429 rate limited — backoff and retry; 5xx APS upstream outage — retry with jitter. Side effects: NON-IDEMPOTENT. Each call mints a new render_id (tm_<epoch_ms>). Inserts a row into D1 usage_log. When the pipeline is live it will create a rendering job on ScanBIM's compute backend.
    Connector
  • Returns all 22 Major Arcana cards (The Fool through The World) as a structured array. Major Arcana represent universal archetypes and major life themes. SECTION: WHAT THIS TOOL COVERS The 22 Major Arcana are the foundation of the tarot — they deal with karmic and spiritual lessons, major life events, and universal forces. They are numbered 0 (The Fool) through 21 (The World). Each has an astrological correspondence and elemental association. SECTION: WORKFLOW BEFORE: None — standalone. AFTER: asterwise_draw_tarot_cards — draw from this subset by filtering by arcana_type. SECTION: INPUT CONTRACT response_format — Required: markdown | json. SECTION: OUTPUT CONTRACT data[] — 22 card objects, each identical to asterwise_get_tarot_card output. Ordered 0–21 (The Fool through The World). SECTION: RESPONSE FORMAT response_format=json — array of 22 card objects. response_format=markdown — formatted list. SECTION: COMPUTE CLASS FAST_LOOKUP SECTION: ERROR CONTRACT INVALID_PARAMS (local): None. INTERNAL_ERROR: Any upstream API failure → MCP INTERNAL_ERROR SECTION: DO NOT CONFUSE WITH asterwise_get_tarot_cards — full 78-card deck including Minor Arcana. asterwise_get_tarot_suit — 14 Minor Arcana cards by suit.
    Connector
  • Draws one card and returns a yes, no, or maybe answer with confidence level. The answer is derived from the card's built-in yes_no polarity and its orientation. SECTION: WHAT THIS TOOL COVERS Quick binary oracle using the classical tarot yes/no system. Each card in the Rider-Waite-Smith deck has a pre-assigned polarity (yes/no/maybe). Reversal introduces uncertainty — a yes-polarity card reversed becomes maybe rather than no. This allows nuanced answers: strong yes, leaning toward yes, leaning toward no, strong no, or genuinely unclear. Answer logic (exact): yes-polarity card + upright → answer='yes', confidence='strong' yes-polarity card + reversed → answer='maybe', confidence='leaning' no-polarity card + upright → answer='no', confidence='strong' no-polarity card + reversed → answer='maybe', confidence='leaning' maybe-polarity card (any orientation) → answer='maybe', confidence='unclear' SECTION: WORKFLOW BEFORE: None — standalone. AFTER: asterwise_get_tarot_three_card_spread — for more context when the yes/no answer is 'maybe' or the situation needs elaboration. SECTION: INPUT CONTRACT allow_reversed (bool, default true) — Recommended to keep true for nuanced answers. Set false only if you want strictly yes/no with no maybe results from reversal. question (optional string, max 500 chars) — The yes/no question being asked. Example: 'Should I accept this job offer?' Example: 'Will the project launch on time?' SECTION: OUTPUT CONTRACT data.card — full card object data.is_reversed (bool) data.answer (string — 'yes'|'no'|'maybe') data.confidence (string — 'strong' when card directly says yes/no; 'leaning' when reversed card; 'unclear' when maybe-polarity card) data.active_meaning (string — orientation-appropriate interpretation) data.question (string or null — echoed) SECTION: RESPONSE FORMAT response_format=json — full yes/no result object. response_format=markdown — formatted oracle response. SECTION: COMPUTE CLASS FAST_LOOKUP — cryptographic randomness, no ephemeris. SECTION: ERROR CONTRACT INVALID_PARAMS (local): None. INTERNAL_ERROR: Any upstream API failure → MCP INTERNAL_ERROR SECTION: DO NOT CONFUSE WITH asterwise_get_tarot_three_card_spread — positional reading, not binary answer. asterwise_draw_tarot_cards — free draw without answer logic.
    Connector
  • Ask the human owner to rotate ANOTHER agent's active API key (mint a new one + revoke the old). Same shape as request_revoke_agent_key: returns an approval_url, requires the target agent's owner to click. The new key plaintext is INTENTIONALLY not returned to the requesting agent; it's surfaced only to the human owner via Settings → Agents, who hands it to the target agent out of band. Use when you've spotted leakage and the target needs a clean credential without going dark mid-task.
    Connector