679,087 tools. Updated 2026-10-19 23:15
"ts-node" matching MCP tools:
- Get one pipeline: metadata plus a summary of its node graph (node ids, types, labels). Pass includeGraph to get the complete graph — every node with position and config, and every edge — which is what update_pipeline needs as a starting point. Never write a graph reconstructed from the summary: it drops configs.ConnectorAPI key
- Returns a pseudonymous channel descriptor {descriptor, witness:{ts}}; the 3.3 KB ML-DSA signature and the handle-ownership proof come as separate parts (part=sig | part=proof) because they cannot share one 8 KiB lane reply. Verify all three locally (SDK voidVerifyDescriptor) before following. Private-lane-only (a direct lookup would tell the gateway which channel your IP wants): use the stdio door.ConnectorNo auth
- Add npm packages to the project (validated against Floot's supported set — rejected packages get a supported alternative named; some versions are pinned/substituted). Avoid node-gyp/native packages (exception: sharp is supported, auto-pinned), WASM modules, and packages bundling large binaries (e.g. ffmpeg/ffprobe); pure JS/TS preferred. A bare `kysely` keeps the version the project already records (a project without one gets 0.28.17), the version its db/schema helpers are written against; pass an explicit `kysely@<version>` only when upgrading it deliberately. Installs on the project VM and persists resolved versions. After a slow install completes as a job, call add_dependency again with the same packages — the second call is fast and persists.ConnectorOAuth
- <summary>Read a Campaign Flow node's "went through" history: prospects who held a position on `node_id` and have since advanced off it, newest visit first — the same per-node History list the Flow node-detail panel renders on node-click. Use it to answer "who passed through the connect step", "who has already been through step 2", or to see where a node's past occupants moved on to. This is the history counterpart to get_campaign_flow's live `current` occupancy count; for who rests on a node *now*, filter query_prospects on `current_node_id` instead. Pass any of the user's campaigns; not limited to the agent in context. Reads the append-only position log directly, so an `off_sequence` node id a later flow edit dropped still returns its history. A node no one has moved off — including the start node, which stores no position rows of its own — comes back empty.</summary> <returns> <description>Dict with node_id, count, and prospects array. `count` is how many prospects went through and moved on in total (independent of `limit`/`offset`, so the page count is ceil(count / limit)); `prospects` is the requested page, newest visit first, each {id, name, email, linkedin_url, provider_id, current_node_id, visited_at} — `current_node_id` is the node they rest on now, `visited_at` the ISO time they last held `node_id`.</description> </returns>ConnectorOAuth
- <summary>Edit one existing node of a campaign's flow in place, leaving the rest of the DAG untouched. Use this — not `define_sequence` — whenever the set of nodes isn't changing: to change a send step's message or a connection request's note (`message_templates`), change a decision's `rule` or `arms`, relabel any node, reword a manual step's `action_description`, or repoint a node's out-edges. Pass the node's full new definition; its `id` selects which node to replace and must already name a body node, and its `kind` must match that node's current kind. Because no node is added, dropped, or renamed, every prospect keeps its cursor and each node keeps its `on_enter` enactment (prompt, code, run history). The edited sequence is re-validated as a whole, so an edge repoint that would dangle a reference, orphan a node, or introduce a cycle is rejected rather than saved. To add or remove nodes, change a node's kind, or edit the start node, re-author the flow with `define_sequence` instead. A forked-on condition is often restated in several places — a decision's `rule`, each `arm.case`, a downstream terminal's `label`, and the node's `on_enter` prompt. When you change one, change the others in the same turn (a further `update_node` for the node fields, `update_trigger` for the prompt) so they agree.</summary> <returns> <description>Dict with `success`, `agent_id`, and `node_id`. Read the updated flow via get_campaign_flow.</description> </returns>ConnectorOAuth
- Create a workspace node of any type If this job may already have a playbook, call playbooks search first. One call creates any of the 11 node types with its type-specific payload: `fields` for a Base, `body` for a Doc, `files` for a Skill/Drive/AirApp, `assetId` for a File. Review is permission-aware, decided server-side: this merges immediately when you already have write access on the parent node, and proposes a ChangeRequest for a human otherwise. Pass requireReview to always propose instead of merging. Before you finish: if the person will come back to this node to do the same job again, pass agentPrompts so the node opens with THEIR job on it instead of the node type's generic list.ConnectorAPI key
Matching MCP Servers
- AlicenseAqualityCmaintenanceProvides TypeScript and JavaScript code refactoring operations using ts-morph, allowing AST-based symbol renaming, file/folder renaming, reference searching, and path alias removal when integrated with editor extensions like Cursor.827 npm16MIT
- AlicenseAqualityDmaintenanceEnables AI agents to search and retrieve jam-nodes documentation, including node info, API references, and guides, via MCP tools without loading everything into context.51MIT
Matching MCP Connectors
AI-to-AI petrol station. 56 pay-per-call endpoints covering market signals, crypto/DeFi, geopolitics, earnings, insider trades, SEC filings, sanctions screening, ArXiv research, whale tracking, and more. Micropayments in USDC on Base Mainnet via x402 protocol.
Privacy-first PDF to Markdown/JSON converter for AI Agents. Optimized for complex B2B invoices (E-Fatura) and tables. Features native Turkish character correction and local-first WASM parsing.
- USE WHEN someone wants the code for an onchain agent, not advice: describe the goal and get a runnable TypeScript repo generated from a template that is re-checked every night. Same handler as POST /api/create and the create-sato-agent CLI. NOT FOR choosing a stack or advice (use onchain_agent_recommend_stack or onchain_agent_build_plan instead) or a plan with no repo (use onchain_agent_scaffold_plan). The goal picks the template; it never changes a template code file. A goal no template answers returns no_template with the nearest templates instead of improvised code — each with its id, framework, intents, chains and `mismatched` (what differs from the request), so the next call can name one. TEMPLATES, as template (intents: frameworks): base-guarded-trader (trading, swap: agentkit, ai-sdk, claude-agent-sdk, openai-agents, plain-ts); persona-agent (general, payments: claude-agent-sdk); research-report (data, research: plain-ts); solana-guarded-swapper (trading, swap: plain-ts); token-launch-prep (launch: plain-ts); treasury-monitor (data, treasury: plain-ts); x402-seller (payments: plain-ts). Any other intent × framework pair answers no_template. The repo carries policy.json (spending caps, allowed chains and tokens), sato.lock.json (dependency custody readings) and sato.create.json (the manifest, signed when a key is configured). It generates for a local fork by default and testnet on request; mainnet is refused unless network is "mainnet" and mainnet_risk_accepted is true, and a template that does not run on the network says so. RULE ENFORCED: the goal is not stored or logged. A refusal names its error code and, where one applies, the rule. `last_green` is the day the template last passed its nightly checks, or null — never invented. Nothing is audited, and nothing here signs, holds keys or moves funds. RETURNS (json): { schema: "sato.create.response/v1", ok: true, template: { id, version, digest, framework }, files: [{ path, encoding, content }], zip_base64?, env_names, next_commands, manifest, last_green, status_url, cli } or { ok: false, error, message, rule?, nearest?, blocked? }. Writes nothing. Example: { goal: "swap USDC to ETH on Base with a per-trade cap", framework: "plain-ts" }ConnectorNo auth
- Cordon one Kubernetes node: set spec.unschedulable=true so no new pods schedule onto it. Running pods are NOT evicted - they keep running until removed (delete_pod) or drained by an operator, after which their controllers recreate them on other nodes. This is the standard first step of node consolidation: cordon the node, remove its remaining pods, and let the cluster-autoscaler or an operator reap the empty node. Note delete_pod issues a direct delete, not an Eviction-API evict, so PodDisruptionBudgets are NOT consulted - check disruption budgets and replica counts before removing pods from the node. node_name must match the Kubernetes node name exactly (call get_nodes to list them); an unknown node is refused without changing anything. Fully reversible with uncordon_node. This is the only Node mutation available to the AI assistant - patch_resource still refuses the Node kind.ConnectorOAuth
- Repair one Kubernetes node of an Ankra-provisioned cluster (Hetzner, OVH, UpCloud, DigitalOcean, or Scaleway) at the OS level over SSH-via-bastion: restarts the node's Kubernetes service unit (k3s / k3s-agent / kubelet) wrapped in Ankra's node-recovery engine, which classifies the failure and applies the matched curated fix (clear a failed unit, extend a start timeout, kill stale listeners, unblock the apiserver firewall, re-bootstrap the kubelet), verifies, and retries once. This is a privileged, not-cleanly-reversible action on a production node and briefly disrupts its workloads, so it requires confirmation. It does NOT run arbitrary commands - only the curated recovery plan. Always call ssh_diagnose_node first to confirm the node is broken at the OS level (not merely unreachable via bastion, which a node reboot - restart_node - addresses instead). Identify the node with node_id (preferred) or node_name. Not available for imported or managed-Kubernetes clusters, nor (yet) Proxmox/HPE Morpheus.ConnectorDestructiveOAuth
- Removes a node from a live Trident document. All connections to/from this node are also removed automatically. Use get_document_summary to get all node IDs before calling this. This action is reversible via Ctrl+Z in the Trident editor. Requires a valid editor access token.ConnectorDestructiveNo auth
- Search for text across all files in an app. Returns matching lines grouped by file with line numbers. Skips node_modules, .git, and binary files. Max 500 results by default. Supports grep-like options: context lines (-A/-B/-C), file glob filtering (e.g. "*.ts", "src/**/*.ts"), and output modes (content, files_with_matches, count).ConnectorNo auth
- Full message history for ONE thread. Input: threadId (from inbox). Returns { threadId, campaignId, leadId, leadEmail, mailboxEmail (null before first send), messages[] }, each message { type (sent/reply/auto_reply/bounce/...; auto_reply = an automatic reply such as out-of-office), step (the sequence step of a sent message, null otherwise), ts, messageId, metadata }, oldest first. 404 if unknown. Use inbox to LIST threads; reply to respond; mark/label_thread to triage.ConnectorOAuth
- FREE (no payment): store a memory in YOUR namespace, proven by an EIP-191 personal_sign instead of an x402 payment. wallet_auth = base64 JSON {address,ts,signature} where signature = personal_sign of 'borismem-free:<address>:<ts>' (ts within 600s). Writes to the SAME namespace paid calls use. Capped at 1000 writes / rolling 30 days per wallet; over cap returns an error pointing to the paid tier.ConnectorNo auth
- Registers a mailbox so others can seal to you. PRIVATE BY DEFAULT: the server stores only a salted hash of your signing address — pass `handle` to be reachable by name (agents get the same handle claim browsers have), or `public:true` to bind your bare 0x address in the open directory instead. Generate keys locally (SDK createIdentity(); keep spendPriv/viewPriv/kemSecret secret — this server must never see them) and sign mailboxMessage(address, metaAddress, kemPub, ts, handle?) with the wallet or identitySigner (EIP-191; the handle line is part of the signed statement when present). Monotonic by ts: re-publish with fresh keys to rotate. Forwards the signed record unchanged.ConnectorNo auth
- Execute a workflow. Run validate_workflow first to catch build errors. SIDE EFFECTS: this really runs every node — sends, external writes, payments, deletes. Do NOT run write/send/payment nodes without explicit user approval. Returns {execution_id, status, node_results, node_states (terminal status/error per node)}; fetch full authoritative outputs with get_node_output, inspect agent-node actions with list_tool_calls. Pass inputs={...} to simulate a form submission / webhook body (injected as the trigger node's output). Set return_output=true for full node outputs instead of truncated previews.ConnectorDestructiveOAuth
- Fetch messages sent via aanet_send_message — the pull-based fallback for when you haven't registered a webhook on the message event. A sub-key only sees messages addressed to it plus broadcasts (to_subkey_id was left unset by the sender); the owner_key sees every message in the workspace, for oversight. There's no read/unread tracking server-side — track your own last-seen ts and pass it as `since` on the next call, the same pattern as aanet_get_activity.ConnectorNo auth
- Fetch messages sent via aanet_send_message — the pull-based fallback for when you haven't registered a webhook on the message event. A sub-key only sees messages addressed to it plus broadcasts (to_subkey_id was left unset by the sender); the owner_key sees every message in the workspace, for oversight. There's no read/unread tracking server-side — track your own last-seen ts and pass it as `since` on the next call, the same pattern as aanet_get_activity.ConnectorNo auth
- Create a test scenario linked to a user story and allocate a real TS-<ordinalId>. Response includes content: canonical stub markdown already containing id: TS-<ordinalId> and story: US-<n>. BLOCKING workflow: call this FIRST → Write the returned content to the repo plans/scenarios path (edit body as needed but keep id: and story:) → call update-test-scenario with the full markdown. Never write scenario markdown that omits id. update-test-scenario rejects missing id/story with a clear error. platformFilePath must be under plans/scenarios/ and end with .md. userStoryOrdinalId is the numeric part of the parent US-<n> id. Optional agentTraceability records Activity inline (no separate report-agent-action for this create).ConnectorAPI key
- Add a new node to an existing form. Inserted before the end screen by default; after_node_id controls insertion position. Inserting into a linear flow automatically re-links the chain (the node before the insertion point points to the new node, which points to what followed) - you do not need clipform_set_logic for a simple insert. Branching still needs an explicit logic write. Node types and config schemas match clipform_create_form.ConnectorNo auth
- Return content for one or more navigation nodes in a filing. Pass one node via node_id or several via node_ids, using the node ids from TOC lines (the same values shown as NODE_ID lines in this tool's output). Returns plain MCP text: an ARTIFACT_DOCUMENT_ID header, then per-node blocks with NODE_ID, TITLE, CITATION_URL, CITATION_MARKDOWN, CONTENT_START … CONTENT_END. Each block's CITATION_URL links to the reader location for that node; CITATION_MARKDOWN is the same link as ready-to-paste markdown [TITLE](CITATION_URL). A requested TOC node may expand into more granular child NODE_ID blocks, each with its own TITLE, CITATION_URL, and CITATION_MARKDOWN. Responses that include citations end with a CITATIONS_IN_THIS_RESPONSE list.ConnectorNo auth
- Every published v2 mailbox. PUBLIC rows carry {address, metaAddress, kemPub}; PRIVATE rows (the default since 2026-08-28) carry {handle, metaAddress, kemPub} and deliberately NO address. Identical for every reader, so fetching it reveals nothing about whom you intend to message — pick the recipient locally. Seal with the SDK: seal({metaAddress, kemPub}, {text, ts, from?, sig?}). Read-only.ConnectorNo auth