Skip to main content
Glama
281,185 tools. Last updated 2026-07-10 06:05

"Generating a module in an iOS Xcode project using MVP with Coordinator architecture" matching MCP tools:

  • Full-text search the ACC Docs module on a project for drawings, specs, submittals, and other documents matching a query string. Calls the APS Data Management v1 search endpoint scoped to a project. When to use: an agent needs to locate a spec section, a sheet, or a submittal by keyword (e.g. 'fireproofing', 'A-101', 'RFI 23'). When NOT to use: you already have the document URN/lineage — fetch it directly. You want the file contents — this returns metadata; download separately via Data Management. APS scopes: data:read account:read 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; 403 scope or resource permission denied (Docs module access required); 404 project_id not found — check the ID (note: this endpoint re-prepends 'b.' so pass the UUID form); 429 rate limited — backoff and retry; 5xx APS upstream outage — retry with jitter. Side effects: READ-ONLY. Inserts a row into D1 usage_log. Idempotent.
    Connector
  • Given a rack (a set of module ids the user owns), rank the modules NOT in the rack by how many rack members they pair with. The set-level companion to find_compatible_with: where that answers "what pairs with module X?", this answers "given my whole rack, what single module should I add — the one that pairs with the most of what I already have?". The ranking signal is `pair_count` — the number of DISTINCT rack members a candidate pairs with. A module that modulates five of your modules ranks above one that modulates one. This aggregate is the point: you can't get it from per-module find_compatible_with calls without tallying distinct members by hand. Use this for: - "What should I add to a rack with <modules>?" / "what fills out this system?" - "Given these modules, what pairs well with the most of them?" - Inspecting a rack's own internal pairing structure (the `internal` edges). Combination edges only. Ranking uses the seven patch-time relationships (clock-source-for, cv-source-for, modulator-for, audio-source-for, quantizer-for, trigger-source-for, envelope-target-for) — the "A and B work together in a patch" kinds. The substitution/catalog kinds (alternative-to, replaces, expander-for) are deliberately excluded: a pairing recommender shouldn't suggest replacing your modules with each other. For "what's an alternative to X?" use find_compatible_with. Args: - rack (string[], required): module ids, e.g. ["make-noise/maths", "mutable-instruments/plaits"]. Ids that match no module are returned in `unknown_ids` (and in `unresolved` with did-you-mean suggestions) rather than failing the call. Surface those rather than proceeding on a partial rack: the server is stateless about your rack — it keeps no memory of it between calls, so pass the COMPLETE current set every call. Max 64. - relationship (string, optional): restrict ranking to one combination kind above. Omit to consider all seven. - limit (number): default 25, max 100. Returns: { "rack": [{ id, name }], // the rack members that resolved "unknown_ids": [string], // rack ids that matched no module "internal": [{ from_module_id, to_module_id, relationship, source_id }], // edges within the rack "candidates": [{ id, name, manufacturer, pair_count, "pairings": [{ rack_member, relationship, direction, source_id }] // why it pairs, per member }] } `direction` on each pairing is relative to the rack member: 'outbound' = the candidate is the role-bearer (it `relationship`s the member, e.g. the candidate is a modulator-for the member); 'inbound' = the member is the role-bearer. Coverage caveat: rankings are only as dense as module_relationships. A thin or empty result means the corpus hasn't recorded those edges yet, not that no good pairing exists — call report_gap if you expected matches.
    Connector
  • Community-discourse search via parallel.ai with optional platform filtering. Returns synthesized text excerpts plus direct URLs to real Reddit threads, X posts from named operators, Substack essays, LinkedIn posts, Facebook posts. Use for: "what are practitioners saying about X", recurring themes in founder voice, multi-platform discourse mapping, verbatim quotes from named individuals. Per Phase 3.5 empirical A/B (Docs/solutions/architecture-decisions/search-backend-architecture-jun04.md): this tool SOLVES the Reddit/X retrieval gap that perplexity_search fundamentally couldn't fill. Optional platforms[] to restrict (e.g. ["reddit","x","substack"]). Per social-listening-synthesis §3 sample ≥3 platforms per brief.
    Connector
  • Create a new project on your account so an agent can bootstrap from a fresh account. The slug is derived from the name and validated server-side (format, reserved words, uniqueness). Each plan includes a fixed number of active projects (free tiers one; paid plans more — see list_subscription_plans); at the limit this returns an error telling you to archive a project or upgrade. Requires an ACCOUNT-scoped token and the `config` scope. Returns the created project ({id, slug, name, apiBaseUrl, archived}); mint a project-scoped token in the panel to then configure it.
    Connector
  • 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.
    Connector
  • Return modules that have a typed compatibility relationship with the given module. Both edge directions are returned and tagged via the per-match `direction` field — so a single call answers both "what is X a R for?" and "what is a R for X?". `relationship` is OPTIONAL. Omit it to get EVERY edge touching the module across all relationship kinds — the bare "what pairs with / relates to X?" question — with each match self-describing via its own `relationship`. Pass a relationship to restrict to that one kind. Prefer the relationship-less call when you don't already know which kind exists; reach for the typed form only when the question names a specific role ("what clocks X?"). Use this for two question shapes: 1. Patch-time compatibility — "what could I use as a clock source for X?" (returns matches with direction='inbound'), or "what does X clock?" (direction='outbound'). 2. Catalog comparison — "what's an alternative to X?" (symmetric), "what does X replace?" (outbound) / "what replaces X?" (inbound), "is there an expander for X?" (inbound). The vocabulary describes the edge as stored (from = role-bearer, to = target): Patch-time: - clock-source-for — A clocks B - cv-source-for — A produces CV that B consumes - modulator-for — A is a modulator suitable for B (LFO, S&H, random) - audio-source-for — A is an audio source for B (typically a VCO into a VCF) - quantizer-for — A quantizes for B - trigger-source-for — A produces triggers that B consumes - envelope-target-for — A is something B's envelope output is designed to drive Catalog: - replaces — A is the newer successor to B (Morphagene replaces Phonogene) - alternative-to — symmetric: A and B occupy similar design space with different character - expander-for — A is an expander module for the host module B Direction tag on each match: - outbound: queried module is the FROM side (role-bearer). Match is what the queried module does as R. - inbound: queried module is the TO side. Match is the R-for the queried module. - symmetric: only for alternative-to. Args: - module_id (string, required): "<manufacturer-slug>/<module-slug>" - relationship (string, optional): one of the values above. Omit for all edges. - limit (number): default 50, max 200 Returns: { "module": { id, name }, "relationship": <relationship> | null, // null when none was passed (all-edges query) "matches": [{ id, name, manufacturer, notes, source_id, direction, relationship }] } If the module is unknown, returns an error. If no relationships have been recorded in either direction, returns matches=[]. The `notes` field describes the edge in the canonical A→B direction; combined with `direction` the caller can read it correctly either way.
    Connector

Matching MCP Servers

  • F
    license
    -
    quality
    B
    maintenance
    Enables any MCP-compatible AI assistant to search, filter, and retrieve information from a local document collection using a hybrid search pipeline with vector, BM25, reranking, and LLM enrichment.
    Last updated
    4
  • F
    license
    -
    quality
    D
    maintenance
    MCP server for standardizing software module development with tools for planning, code quality analysis, security scanning, performance evaluation, documentation generation, accessibility checks, and progress tracking.
    Last updated

Matching MCP Connectors

  • Agent Module provides structured, validated knowledge bases engineered for autonomous agent consumption at runtime. Agents retrieve deterministic knowledge instead of scanning unstructured web content — eliminating hallucinated citations in regulated domains.

  • AI transaction coordinator + legal-matters platform for real estate and law firms.

  • Patch diagram tool. Use when the user describes routing across multiple Eurorack corpus modules. Renders modules as boxes laid out by wire topology (matrix-shaped patches anchor on a hub; otherwise modules step left-to-right by signal-flow rank), jacks as colored ports keyed to signal type, wires as bezier curves. Inline SVG on claude.ai surfaces (web, Desktop chat, mobile); JSON elsewhere. (When to *offer* a diagram unprompted: SKILL.md §4.) **Trigger phrases:** "show me the patch", "draw what I just described", "remind me what's connected to what", "explain the routing", or any time you'd otherwise hand-draw a patch in SVG/text — use this instead of drawing. Strict gate — call only when ALL of: 1. At least 3 named corpus modules. 2. Explicit wire connections between them (user-stated or derived from a coherent description). 3. The patch is concrete — user is following a tutorial, describing their own rack, or referencing back what's connected to what. Do NOT call for: a single module, a question about one module's jacks, "what should I patch X to?" (that's a recommendation, not a graph), or hypothetical patches with unnamed placeholders ("connect a VCO to a filter"). Jack names. Corpus jack names are descriptive ("V/Oct CV input", "TRIG input", "Strumming trigger input"), not panel-text shorthand ("V/OCT", "TRIG"). The resolver accepts panel-text as a fallback when it unambiguously substring-matches one jack of the right direction (e.g. "TRIG" → "TRIG input"); successful resolutions surface as `panel_text_resolved` warnings so you can confirm. Ambiguous panel text ("OUT" on a multi-output module) errors with the candidate list. To skip the fallback entirely, call get_modules to discover the exact corpus names up front (one round trip for the whole batch). Multi-channel modules require a CH<N> prefix. Modules with per-channel jacks (Quadrax, Maths, Tangrams, Stages, Optomix, QMMG, DXG, Pamela's New Workout, Cold Mac, etc.) enumerate each channel separately — e.g. `CH1 TRIG`, `CH2 TRIG`, `CH3 TRIG`, `CH4 TRIG` on Quadrax. Bare names like "TRIG" on these modules will resolve as ambiguous; always pick a specific channel. When the patch doesn't specify which channel, default to CH1. Role per use, not per identity. A module that's a modulator in one patch can be a voice in another (Maths slow-cycle vs audio-rate cycle). Pick the role for THIS patch. The enum is intentionally coarse — four buckets, not a taxonomy — so map the edge cases: - **clock** — anything emitting timing: clocks, but also trigger/gate *sequencers* and drum sequencers (a sequencer is a clock that emits a pattern). - **modulator** — CV/envelope/LFO sources shaping another module (envelopes, LFOs, random, function generators, S&H). - **voice** — anything generating the sound being processed: oscillators, drum voices, noise, sample players, physical-modeling/granular *sources*. - **processor** — anything acting *on* an incoming signal: filters, VCAs, effects (delay/reverb), waveshapers, granular/spectral *sound-processors*, and all utilities (mixers, attenuators, mults, switches). When a module both makes and processes sound, bucket by its job in THIS patch — a granular module sculpting an external input is a processor; running free as a source it's a voice. Role is currently informational — the renderer lays out by wire topology, not by role bucket — but it's still a required field, so declare it accurately for future renderer use and so the spec reads correctly. `notes[]` is patch-level prose displayed below the diagram — settings, signal-flow narration ("PNW OUT1 firing 1/16 gates", "Channel 1 cycle mode, long rise"). Errors (descriptive — they point at fixes): - "Module not found: <id>" - "Unknown jack "<name>" on <id>. Available <inputs|outputs>: ..." — pick from the list, or call get_modules - "Ambiguous jack "<name>" on <id>: matches ..." — name a specific jack from the candidates - "Patch must have at least 3 modules" - "Wire source ... is not an output" / "Wire destination ... is not an input" - "Wire to/from unknown module ref: <ref>" - "Duplicate ref: <ref>" Cross-type wires (e.g. audio into a CV input) render normally with a warning panel below the diagram — Eurorack tolerates type mismatches by design, but warnings catch unintended ones.
    Connector
  • Start generating an AML risk report ASYNCHRONOUSLY for a Norwegian company. Returns immediately with a report_id and status 'pending' — the report is built in the background. Poll `get_aml_report` with the report_id until status is 'done' (then read score/level/factors) or 'failed'. Use this instead of `get_aml_score` for large/complex ownership structures that may otherwise time out, or to start many screenings in parallel. Generates an auditable report stored for 60 months per Hvitvaskingsloven §35.
    Connector
  • Given a rack (the module ids the user owns), return which canonical patch techniques the rack can realize, and which it is one module away from. The set-level companion to find_role_realizations: where that answers "which module fills role R in technique T?", this answers the rack owner's actual question — "given everything I own, what can I actually do, and what am I close to?". This is the right tool the moment a user gives you their modules and asks an open "what can I do / what can this rack do / what am I missing?" question — instead of guessing techniques from training priors or calling find_role_realizations technique-by-technique by hand. It runs the affordance match across the whole technique catalog for you. Returns two buckets: - reachable: every required role has a rack module that fills it. Each carries an `assignment` (role → module). `requires_shared_module: true` flags a technique only reachable by reusing one module for two roles — verify those roles can share one instance. - near_misses: all-but-one role fillable; `missing_roles` names the unfilled role(s) and the `required_affordances` you'd need. This is the acquisition signal — "you can already do X; you're one <affordance> module away from Y". Args: - rack (string[], required): module ids, e.g. ["make-noise/maths", "mutable-instruments/plaits"]. Max 64. Ids that match no module are returned in `unresolved` (with did-you-mean), not silently dropped. - limit (number): max techniques per bucket. Default 25, max 100. Stateless-rack contract: the server keeps no memory of your rack between calls — pass the COMPLETE current rack every call. A partial rack silently narrows what's reported reachable, so if a module id doesn't resolve, surface the `unresolved` did-you-mean to the user rather than proceeding on the incomplete set. Scope: reachability is role-PRESENCE based. It does NOT verify per-role instance counts (cardinality) — a technique needing two independent envelopes is judged reachable if you have one envelope source. The distinct-instance question (can one module fill two roles?) is surfaced as `requires_shared_module`, not silently assumed. For the editorial detail on a specific technique (canonical instance, counter-canonical notes, full realization list), call list_techniques; for one role's candidates, find_role_realizations. To go the other way — which of your modules are redundant / safe to sell — call rack_redundancy.
    Connector
  • Make an image tahta-grade for a deck's variant (editor+): crop to 16:9, apply a scheme-aware duotone (palette-lock), grain, and an optional contrast scrim. Upload the source with upload_attachment first, then pass its attachment_id; the treated JPEG is saved as a new attachment and returned with a ready-to-place ![](…) snippet for a bg:/image: slot. This is the tahta-imagine treat step — a FALLBACK for off-palette or reused images; prefer rich on-palette images raw, and never duotone (mode=duotone) a real-colour focal subject — use mode=none for those. See the imagery capability module (deck_authoring_guide module="imagery").
    Connector
  • Complete Disco signup using an email verification code. Call this after discovery_signup returns {"status": "verification_required"}. The user receives a 6-digit code by email — pass it here along with the same email address used in discovery_signup. Returns an API key on success. Args: email: Email address used in the discovery_signup call. code: 6-digit verification code from the email.
    Connector
  • Read / write / clear the agent's freeform UI taste notes (a small markdown document of presentation preferences learned from human feedback — 'denser layout', 'no rounded corners'). ONE tool with an `action` enum: get | set | clear. Call `get` BEFORE generating a pane so prior feedback shapes the output; `set` does a whole-document replace (not append). Keep entries about UI/presentation only.
    Connector
  • Adversarial multi-model code review. Submit a diff, a module, or a spec+implementation and get back a structured pass/fail verdict with each issue's type, severity, location, explanation, and suggested fix. Why call this instead of reviewing your own output: a single model shares its blind spots with itself. This routes your code through a panel of *different* models plus a set of deterministic detectors, catching what self-review misses — path/contract violations, module incoherence (dangling imports, broken cross-references), syntax and call-arity regressions in a diff's post-image, and 'prose instead of tool calls' (output that describes an action rather than emitting it). The panel adds semantic judgment on top and never overrides a deterministic finding. Call it before shipping or merging, as a second opinion on a risky change, or as a gate in an autonomous build loop. Choose depth='fast' (one model, low latency) or 'deep' (full panel, higher recall). Deep review audits files of any size in milestone chunks so every panel model contributes; the price (shown in the 402) and the payment window scale with file size. Per-call limit ~1,600 lines — larger inputs return 413, so split by file/module and call once per file. Paid per call via x402 (USDC on Base); the price is announced in the 402 response before any charge.
    Connector
  • Delete an instance from a project. The request requires the 'name' field to be set in the format 'projects/{project}/instances/{instance}'. Example: { "name": "projects/my-project/instances/my-instance" } Before executing the deletion, you MUST confirm the action with the user by stating the full instance name and asking for "yes/no" confirmation.
    Connector
  • Get a fast suitability score (0-100) for a US property without generating a full report. Call this when the user wants a quick go/no-go assessment or an initial screening before committing to a full analysis. Returns a single score with confidence level and one-sentence rationale. Consumes a partial (0.25) analysis credit from your AcreLens account.
    Connector
  • Batched get_module — returns `{ modules: [...], errors: [...] }` with full citation-anchored specs for up to 25 modules in one call. Prefer this over multiple get_module calls when you have a known list of modules to fetch (e.g. preparing to call draw_patch_diagram across N modules, comparing several candidates side-by-side). One round trip vs. N. Args: - module_ids: array of "<manufacturer-id>/<module-slug>" strings. Up to 25 per call; duplicates are deduplicated. Optional args (apply to every module in the batch, same semantics as get_module): - view: "concise" returns the id-card subset (name, manufacturer, hp, description, capabilities, production_status, replaced_by) for every module and drops the heavy arrays — the cheapest way to triage a list ("which of these are LFOs?"). "full" (default) returns complete specs. Ignored when fields is set. - fields: top-level keys to include on each module (e.g. ["jacks","parameters"]). id and _meta are always returned. Use this when you only need a slice across N modules (e.g. just jacks for draw_patch_diagram) instead of N full specs. - heading_filter / outline_offset / outline_limit: narrow and paginate each module's manual_outline. Returns: - modules[]: GetModuleResponse for each id that resolved (same shape as get_module; narrowed when fields is set). - errors[]: { id, message } for each id that failed (e.g. unknown module). Other ids in the batch still resolve. If you only need a single module, use get_module — same shape, one element. Need only jacks (e.g. for draw_patch_diagram)? Pass fields: ["jacks"] to skip the full specs.
    Connector
  • For a (technique_id, role_id) pair, return modules that can fill the role, ranked by affordance match. Use this when the user has named a technique and you need to recommend modules for a specific role within it (e.g., "what should I use for the lpg role in a lowpass-gate-pluck patch?"). Optionally pass available_modules to restrict the search to the user's rack — the tool surfaces both documented realizations in the rack AND undocumented candidates whose capability tags match the role's required affordances (or, for roles that declare only optional affordances, those optional ones). This tool exists to STOP the model from inventing module-role recipes from training-data priors. The output is editorially grounded: documented realizations carry corpus-curated notes; undocumented candidates are explicitly tagged so the agent can weigh confidence. Args: - technique_id (required): kebab-case technique id (see list_techniques). - role_id (required): kebab-case role id (e.g., "lpg", "voice", "env", "clock"). See list_techniques → role_definitions for the roles a technique declares. - available_modules (optional): array of "<manufacturer>/<module-slug>" ids — typically the user's rack. When supplied, restricts results AND surfaces undocumented candidates whose module_capabilities match the role's required affordances — or, for an optional-only role (no required affordances), its optional affordances. Returns: { "technique_id": "low-pass-gate-pluck", "role_id": "lpg", "role": { "label": "Low-Pass Gate", "description": "Vactrol-style..." }, "role_definition_description": "The vactrol-based or vactrol-emulating element...", "required_affordances": ["lowpass-gate"], "optional_affordances": [], "realizations": [ { "module_id": "make-noise/optomix", "documented": true, "affordances_provided": ["lowpass-gate"], "required_matched": ["lowpass-gate"], "optional_matched": [], "missing_required": [], "fit_score": { "required": 1, "optional": 0 }, "notes": "Two-channel vactrol-based LPG..." }, ... ], "_meta": { "available_modules_filter": null, "documented_count": 19, "candidate_count": 19 } } Ranking: by required_matched.length desc, then optional_matched.length desc, then module_id asc. A candidate with missing_required.length > 0 is NOT a valid realization but is still returned (sorted last) so the agent can explain why a rack module isn't a fit. satisfied_via: a rack module can fill a role through a capability-satisfaction edge rather than a literal affordance tag — e.g. a module with an internal low-pass gate (capability internal-lpg) fills the lpg affordance and self-plucks, so it realizes a low-pass-gate-pluck on its own. Such matches carry a satisfied_via:[{ affordance, via, kind }] entry (kind="self-contained" means it fills the role internally, not as an externally-routable instance you patch into) so you can distinguish "this module self-plucks" from "this is an external LPG." Present only on undocumented rack candidates and only for non-literal matches. Errors: - "Technique not found: <id>" - "Role not defined for technique: <role_id> in <technique_id>" - Empty realizations[] with a feedback_hint when filters produce no matches.
    Connector
  • Get a custom item type with its fields and sections inline, so you can see its schema before creating or updating records. Custom items are user-defined entity types — Contracts, Leads, Deals, or anything else a customer has set up on a project. Use these tools when the user refers to an entity that is NOT a built-in Teamwork concept (Task, Tasklist, Project, Milestone, Comment, Notebook, Company, Team, User, Tag). If you don't recognise an entity name in the user's request, assume it is a custom item and call twprojects-list_custom_items on the relevant project to confirm.
    Connector
  • List your campaigns with ID, name, status (draft/running/paused), description and lead counts. Use this to obtain campaign_id when adding leads, generating messages or approving drafts.
    Connector
  • Use this when you need to turn text or a URL into a real, scannable QR code rather than describing one. Deterministic: same input, same output. Byte mode, error-correction level M, versions 1-10 auto-selected by length (up to 213 bytes); the encoder scores all 8 mask patterns and keeps the lowest-penalty one. Returns both the module matrix as rows of 0/1 (1 = dark module) and a ready-to-render self-contained SVG string. moduleSize sets SVG pixels per module (default 10) and quietZone the border width in modules (default 4). Example: {text:'HELLO'} -> version 1, size 21x21, byteLength 5. Longer text auto-bumps the version and matrix size; over 213 bytes returns an error.
    Connector