Skip to main content
Glama
778,898 tools. Updated 2026-11-13 21:53

"Esoteric Software" matching MCP tools:

  • Create a new versioned shared file in the caller's org. Shared files default to private. Call ``file_publish`` to generate the public share URL (``/s/{share_token}``). Each ``file_update`` creates a new immutable version row. Pass ``work_id`` to attach it to a task and/or ``project_id`` to attach it to a project (same ``shared_files`` row; project attachments are ``kind=artifact`` only). ``content_format='diagram'`` takes either diagram schema: - ``teamshared.diagram/v1`` — ``body: {format: mermaid, text: "..."}``, rendered as Mermaid. Best for flowcharts, sequences, and ER sketches. - ``teamshared.diagram/v2`` — ``body: {format: scene, layers: [...], nodes: [...], edges: [...]}``, rendered as a layered 3D scene where each layer is a plane (infra / software / data by convention), each node sits on one layer, and edges may cross layers. ``kind`` (default ``system``), ``view`` (``layers``), ``mode`` (``authored``) and ``body.camera`` are optional. Every node needs ``id`` and ``layer``; ``shape`` is ``box`` | ``cylinder`` | ``sphere`` | ``cone``; edges are ``{from, to, label?, kind?}`` with ``kind`` one of ``sync`` | ``async`` | ``data`` | ``depends``. Omit ``x``/``z`` to get an automatic grid on the plane. Caps: 8 layers, 300 nodes, 600 edges, 256 KiB. Unknown keys are rejected.
    ConnectorNo auth
  • Transition a sprint to a new status: ACTIVE (start a PLANNING sprint), COMPLETED (close an ACTIVE sprint; incomplete stories return to backlog), or CANCELLED. Only ONE sprint per project can be ACTIVE: starting a second returns SPRINT_ALREADY_ACTIVE naming the active one — complete or cancel it first (stride.list_sprints shows statuses). A sprint already in the requested state returns SPRINT_ALREADY_IN_STATE (with requestedState) and changes nothing — distinct from SPRINT_ALREADY_ACTIVE, which means a DIFFERENT sprint holds the slot. Illegal transitions return isError with the legal next states. Conflict-guarded against concurrent human edits (pass force:true, after re-reading with get_sprint, to override — the override is audit-logged).
    Connector
    Destructive
    OAuth
  • Search SaidItHere for real-world software dilemmas, framework gotchas, tool fatigue, and battle-tested community consensus workarounds from Reddit, Hacker News, GitHub, and Stack Overflow. Usage Guidelines: - Primary discovery tool: use FIRST when investigating bugs, library gotchas, unexpected price hikes, or developer complaints by keywords. - Sibling routing: follow up with 'get_problem(slug)' using the discovered dilemma slug to inspect full evidence quotes, sources, and step-by-step workarounds. - Sibling routing: if 0 matching dilemmas are returned, use 'suggest_dilemma' to queue the topic for crawler consensus synthesis. - Do NOT use for generic language syntax lookups or textbook documentation queries. Behavior & Side Effects: - Pure read-only, safe, and idempotent query without side effects. Does not modify user, session, or database state.
    ConnectorNo auth
  • Explain how HelloBooks and Munimji (the in-app AI assistant) help a specific business — given a free-text description of the user's own operations. Returns a curated capability knowledge base: business-operation areas (sales, purchases, banking, tax, reports, inventory, payroll, multi-entity, setup), and for each AI capability WHO does the work — `autonomous` (Munimji does it on its own, e.g. OCR extraction, running reports), `approval` (Munimji prepares the entry and you one-click approve before it posts to the ledger, e.g. AI categorization, find-and-match, creating invoices/bills by chat), `assist` (co-pilot, e.g. guided onboarding, voice), or `manual` (a software feature you run yourself). Each capability links to the backing software features. Use this when a user describes their business and asks "how can HelloBooks help me?", "what can the AI do for my shop/practice/agency?", or "what can Munimji do on its own vs what do I approve?". Pass their description in `businessDescription`; optionally filter by `area` or `autonomy`. The AI never posts to a ledger without approval. For the full software catalog call list_features; for pricing call list_plans.
    ConnectorNo auth
  • Explain how HelloBooks and Munimji (the in-app AI assistant) help a specific business — given a free-text description of the user's own operations. Returns a curated capability knowledge base: business-operation areas (sales, purchases, banking, tax, reports, inventory, payroll, multi-entity, setup), and for each AI capability WHO does the work — `autonomous` (Munimji does it on its own, e.g. OCR extraction, running reports), `approval` (Munimji prepares the entry and you one-click approve before it posts to the ledger, e.g. AI categorization, find-and-match, creating invoices/bills by chat), `assist` (co-pilot, e.g. guided onboarding, voice), or `manual` (a software feature you run yourself). Each capability links to the backing software features. Use this when a user describes their business and asks "how can HelloBooks help me?", "what can the AI do for my shop/practice/agency?", or "what can Munimji do on its own vs what do I approve?". Pass their description in `businessDescription`; optionally filter by `area` or `autonomy`. The AI never posts to a ledger without approval. For the full software catalog call list_features; for pricing call list_plans.
    ConnectorNo auth
  • Ricerca full-text sui codici ATECO 2007/2022 ISTAT partendo dalla DESCRIZIONE dell'attività ("fotografo", "sviluppo software", "commercio abbigliamento") invece che dal codice. Case/accent-insensitive, con stemming e alias colloquiali per-mestiere; accetta anche un prefisso di codice. Usa questo quando il codice NON è noto — `lookup_ateco` serve al caso opposto (codice noto → descrizione). Risultati ordinati per pertinenza. Gratis (€0), deterministico, nessun login richiesto.
    ConnectorNo auth

Matching MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Provides software design guidance via MCP, including SOLID principles, design patterns, pattern scaffolding, and heuristic code-smell detection to help review and refactor code.
    4
    74 npm
    MIT

Matching MCP Connectors

  • Start linking a cloud account so it can be scanned. `provider` is "aws", the only provider supported today; `account_id` is the 12-digit AWS account number. `software` is the Tomorrow Central software the link is for; omit it for Cloud Cost Sentinel. Each software has its own read-only role, so link once per software. This is a two-party flow and you cannot finish it alone — creating the read-only IAM role requires the human's AWS credentials. Returns a `launch_url`. Hand the human these instructions verbatim: 1. Open the launch_url (a pre-filled CloudFormation quick-create link). 2. Review the read-only role it creates, then click Create stack. 3. Tell you when the stack says CREATE_COMPLETE. Then call `verify_connection` with the returned connection_id. Verification fails with a clear message until the role exists, so polling it every ~15 seconds is safe and expected. No ARN or secret needs to be copied by anyone.
    ConnectorNo auth
  • Set the category of one or more transactions to ONE label — the write that clears a categorization gate. REQUIRED: transaction_ids, the ids of the rows from a read (well_list_uncategorized_window, a transaction list, a query). category — the LABEL, exactly as that read returned it on the row's suggestion, or another label from the closed list this schema carries. The vocabulary is fixed: there is no free-text category and no way to mint one. **A yes, "valide la proposition" or "ok" after another message since the list or proposal it answers names no row. Do not call this tool for that reply. Read the remaining rows again with the uncategorized-window read so Well shows a fresh list; a pick on that list then saves.** **`decision` records HOW the category was chosen, and it changes what the row keeps.** - `accepted_classifier_suggestion` — the user affirmed the label the classifier had already put on the row. The row keeps `category_source: "classifier"` and its confidence score, and the affirmation is stamped as `category_confirmed_at`. Send this ONLY when the label equals the classifier's own stored suggestion. - `user_choice` — the user picked the label themselves. The row records `category_source: "user"` with no score. The server verifies an `accepted_classifier_suggestion` claim against the row it is writing and downgrades it to `user_choice` when the stored suggestion is not that label, so the claim can never manufacture classifier provenance. Omitting `decision` is a `user_choice`. **A row from `well_list_uncategorized_window` never qualifies for the affirmation.** That read returns rows carrying NO category at all, so there is no stored classifier value to affirm and the claim would be downgraded every time. Its `categorySuggestions` are PENDING proposals, not a stored category. Clearing that gate is always a `user_choice`; the affirmation exists for a surface that lists rows the classifier already categorized. Categorizing a row does NOT move it in or out of the internal-transfer rule — that rule counts payment-means legs and no label affects it. What a category DOES change is exemption matching: an uncategorized row can never be matched by an exemption and always stays in a sum. **Send `category: null` to set the row back to no category.** Use it when the user asks to remove or empty a transaction's category. The row then has no category, and the user owns that state: neither the classifier nor a counterparty rule fills it again. A null category takes no `decision`. "Uncategorised / suspense" is NOT "no category": it is a real category that books the line to the suspense account. Never send it to remove a category. The server refuses a null category with the typed reason `TRANSACTION_CATEGORY_BOOKED_IN_LEDGER` when the row's category is already booked in the ledger. Tell the user the category is booked in the ledger, and offer to change it to another category instead. **One call for every row that takes the same label.** When the person names many rows for one category ("put the 12 Uber rides under Transport"), read the rows, then send ALL their ids in `transaction_ids` on ONE call: never one call per row. Up to 50 ids per call; for more rows, split them into calls of at most 50. Rows that take different labels go in separate calls, one per label. `decision` applies to every row of the call, and the server checks an affirmation row by row. Each row is saved on its own. The answer gives `written` and `failed` and one entry per row in `results`. When some rows failed, say which rows were not changed: never report them as done. `totals` sums the saved rows, one amount per currency, signed as the bank books them: say each amount without its sign, a whole amount with no decimals (€412, never €412.00), and never add up amounts yourself. **When every row saved, answer with ONE read-back line**: "Saved: the <written> <the rows, in the person's words>, <total> in total, are under <the category, in the person's words>." For example "Saved: the 12 Uber rides, €412 in total, are under Transport." For one row, name it: "Saved: transaction Figma, €45, 12 Oct: category Software." Add nothing else: no list of the rows, no question. **The list depends on the workspace.** A personal space files household categories, a company workspace business categories, and both file the shared ones. A label outside the workspace's list writes nothing and returns `refusal_reason` with `allowed_categories`: send a `label` from that list. **A name that fits more than one label is a question, never a pick.** When the words the person used fit two or more labels of the list (for example "Logiciels" or "software" fits both "Developer & engineering software" and "Business & productivity software"), do not call this tool: ask which one, naming each label that fits in the person's words, and call it once they answer. Never choose the nearer label, and never put two labels on one call. **`confirm_first`: true when the person's message asks that nothing change before they approve** (for example "ne modifie rien avant mon accord", "show me first", "wait for my OK"). Omit it otherwise. In Well's own sessions the call then waits on Well's confirmation card, even when the person lets Well act alone for this kind of change. In another assistant connected to Well with the person's own sign-in, Well shows no card and a flagged call changes nothing: it returns `awaiting_confirmation: true`. Show the person the transaction and the label, ask for their OK in the conversation, then call again without the flag. Without the flag, your host's own approval of the call is the confirmation. Well checks that the person is signed in and a member of the workspace, and that the label is a category of this workspace. A connection made with an API key cannot change a category. **This write changes Well's copy of the transaction only.** The bank or tool the row was synced from keeps its own category: no call reaches it. When the person named that bank or tool, say that it stays unchanged. When the token authorizes one workspace, call this directly — no workspace call is needed first. When it authorizes several, this read will not guess which one you mean: pass `workspace_id` on the call.
    ConnectorOAuth
  • Free. Sends a message to the human operators of this service: a bug report, a problem with these tools or the documentation, or a suggestion. It is read by people, not processed by software, and nothing is returned beyond an acknowledgement. Do NOT use it for status updates, progress notes, task narration, error logs, or as a fallback when another tool is unavailable or a payment cannot be made -- it cannot complete, retry or work around any task. Name is optional (omit for anonymous feedback); message is limited to 1000 characters.
    ConnectorNo auth
  • Use this when the user has a specific question for 7IT that describe_studio does not answer. Ask 7IT Solutions, a solo senior software studio, a question about whether it fits a project, what a first phase could cover, how engagements run, or what the client owns. Answers come only from 7IT's published profile and contain no prices or commitments; questions that need a quote are passed to our team, which replies directly.
    ConnectorNo auth
  • Returns safety recalls from federal agencies — drug recalls (FDA), medical device recalls (FDA), food/dietary supplement recalls (FDA), consumer-product recalls (CPSC), and vehicle, equipment, tire and child-restraint recall campaigns (NHTSA, since 1966). Use this when the user asks about: recent recalls for a specific company or product, FDA Class I (most severe) recalls, food contamination recalls, drug shortages and recalls, vehicle recalls by make or model (e.g. all Ford F-150 recalls), or to add a 'product-safety event' flag to insider activity / 8-K filings / enforcement actions. Sources (filter via the `source` enum): fda_drug — openFDA /drug/enforcement.json. Drug recalls including prescription, OTC, biologics. Class I/II/III severity. fda_device — openFDA /device/enforcement.json. Medical device recalls (implants, diagnostics, equipment, software). Same classification scheme. fda_food — openFDA /food/enforcement.json. Food + dietary supplements. Pathogen contamination, allergen mislabeling, etc. cpsc — saferproducts.gov RestWebServices/Recall. Consumer-product recalls (clothing, electronics, toys, batteries, etc.). No severity classification; classification field is null. nhtsa — NHTSA recall campaigns from NHTSA's flat files, updated daily. One row per campaign (recall_number = NHTSA's campaign number, e.g. '26V652000'); recalling_firm = the manufacturer that filed the defect report; product_description = NHTSA's defect summary; reason_for_recall = its consequence; remedy and notes as NHTSA writes them. Consumer advisories first: do_not_drive (NHTSA advises owners not to drive the vehicle until it is repaired) and park_outside (park outside, away from structures: fire risk); null on campaigns that predate the advisories. product_quantity is NHTSA's potential units affected (null when not stated); vehicle_model_year_count is the number of distinct make/model/year combinations, not units. makes lists up to 20 makes ('+N more' beyond). A campaign's full vehicle list comes only with source=nhtsa + recall_number: `vehicles` (500 per page, by make / model / year), `vehicles_total`, and `vehicles_next_cursor` (pass it back as vehicles_cursor). classification and status are null (NHTSA uses neither). A campaign NHTSA's file stops listing keeps its row: nhtsa_listing says 'no longer listed by NHTSA' and nhtsa_unlisted_since is the date KeyVex first observed it missing (NHTSA publishes no removal date or reason); both are null while NHTSA lists it. Source: NHTSA Office of Defects Investigation; public domain (http://www.usa.gov/publicdomain/label/1.0/). Cross-source pairing pattern: Recall → 8-K Item 7.01/8.01: pair with get_material_events Recall → insider sells: pair with get_insider_transactions Recall → SEC/DOJ follow-on: pair with get_enforcement_actions Recall → company filings: pair with get_proxy_filings (DEF 14A risk factors) Each record is one recall. Identifier format: `{source}-{recall_number}` (e.g., 'fda_drug-D-1234-2026'). FDA classifications: Class I — serious adverse health consequence or death Class II — temporary or reversible health consequence Class III — unlikely to cause adverse health consequence Source freshness (per-source publication cadence, not KeyVex bug): CPSC publishes within ~1-2 days; recent data flows hourly-fresh. openFDA's snapshot updates every ~10-14 days, and each snapshot carries recall_initiation_date values that LAG the snapshot date by another 30-45 days (the time between FDA classifying a recall and openFDA exposing it). Net: FDA records in this collection typically run ~4-6 weeks behind real-world recall dates, while CPSC is current. A default desc-by-date sort therefore looks CPSC-heavy at the top even when FDA matters more for the query. Filter by source='fda_*' to see FDA-only and avoid the skew. Searching recalling_firm / product_description: case-insensitive; 4+ characters match anywhere, 1-3 characters match a whole word ('3M', 'GE'). A term of 3+ characters searches EVERY recall; a 1-2 character term searches only the newest 5,000 recalls the query's other filters select (the oldest, with sort_order=asc), and coverage_warning says so. Vehicle filters (vehicle_make, vehicle_model) match NHTSA campaigns only, through their vehicles: vehicle_make is the exact make, case- and space-insensitive ('ford' = 'FORD'); vehicle_model follows the search rule above (3+ characters search every campaign; 1-2 characters the newest 5,000). classification filter scope: 'classification' is an FDA-only field. CPSC and NHTSA records always have classification=null (neither uses the FDA severity scheme). Filtering by classification excludes ALL CPSC and NHTSA rows by definition. The query response surfaces this with a notice in coverage_warning when the filter is set.
    ConnectorNo auth
  • Deploy a virtual machine onto Cycle. Prefer containers (deploy_application) for ordinary workloads; choose a VM only for hard isolation requirements, a custom OS or kernel (custom modules, non-Linux), or legacy software that cannot be containerized. Platform rules this tool applies or checks: - The environment's cluster must contain a hypervisor-capable server. list_servers reports 'virtualization' per server; the response notes when no live server in the cluster confirms it. When hardware has to be provisioned for VMs, get_deployable_server_models reports 'hypervisor' per model (and takes hypervisor_only). - Image: exactly one of base_image or image_url. Call with NEITHER to fetch the live base-image catalogue (version identifiers, supported/UEFI flags) without deploying — do that first unless the user named an exact image; prefer versions marked supported. iPXE and external-volume image sources are not exposed here (a 'base' volume backed by a SAN volume is a different thing and IS supported). - Resources are explicit: ram is required, plus exactly one of cores or cpu_pin. - Storage: volumes MUST include the boot volume, identifier 'base'; creates without one are refused. Other volumes attach as RAW BLOCK DEVICES the guest must partition, format, and mount — remind the user. - Access: Cycle generates a root password at create. It is returned here but retrievable for only ~10 minutes, so relay it to the user promptly (afterwards reconfigure_virtual_machine sets a new one). SSH keys attach at provision time: ssh_keys references existing environment-scoped keys, new_ssh_keys creates and attaches them. Serial-over-SSH console access needs no VM networking: get_vm_console_access mints credentials for the user's own interactive session, and run_vm_command runs a single command and returns its output (in-guest setup like partitioning a volume goes through it). - Networking follows the container conventions: IPv6-ONLY private network, hostname defaults to the identifier, public defaults to 'disable', ports map like '443:443'. Point a domain at the VM afterwards with manage_dns_record (records can link to VMs). - Placement: constraints.node.tags.all/.any restricts which tagged servers may host the VM — same tag model as deploy_application; useful when only some servers are hypervisor-capable. Workflow: 1. If the user hasn't picked an image, call with no base_image/image_url to list the base images. 2. Call with preview:true — returns the exact create request (read-only lookups only; nothing is created) to confirm with the user. Never create without explicit confirmation. 3. Call again without preview. The VM is created and, unless start:false, started. The first boot downloads the disk image and can outlast wait_seconds; the job keeps running on Cycle (check list_virtual_machines or get_jobs). Retries are safe: identifier (default: slug of name) is the idempotency key — a repeat call refuses to create a duplicate and reports the existing VM. Pass a fresh identifier to deliberately create another alongside it.
    Connector
    Destructive
    API key
  • Search existing reviewed evidence questions and fixed-pack topics when you do not know a route ID. Use this for governance, tool permissions, audit/export and evidence-boundary questions. For a known software advisory ID or an exact ecosystem/package lookup, use find_package_advisories instead. Supply query as keywords (maximum 160 characters), or leave it blank to browse. offset is the zero-based pagination offset (default 0, maximum 10000; increase by 20). Returns up to 20 matches with route_id, matched wording and the scoped question; pass a route_id to preview_evidence_answer for the complete free answer and sources. Matching ignores case, punctuation and common question words; it does not validate arbitrary new claims. No match is not a negative verdict. Free and read-only.
    ConnectorNo auth
  • Search SwiftProbate's probate reference data (US state overviews, county probate court guides, financial-institution estate-notification guides, and court-form listings) with one free-text query. This is one half of a search/fetch pair: search returns short result items, and you pass an item's id to fetch for the full record. SwiftProbate is probate task-management software that helps people understand and navigate probate; results are general reference information, not legal advice. When to use: open-ended probate reference questions where the user mentions a state, a county, or an institution but it is unclear which specific lookup fits, or where several records may be relevant (e.g. 'probate in Cook County, Illinois' can surface the state overview, the county guide, and the forms listing together). County-level details are unreliable from model knowledge alone, so searching helps for those. When not to use: when the user has clearly named one county, institution, state, or form need, the matching tool (lookup_county_guide, lookup_institution_guide, get_state_overview, find_probate_forms) is more direct. Questions about the user's own estate records need the signed-in estate tools. Not for topics unrelated to probate. How matching works: the query is matched against state names or uppercase two-letter codes ('TX'), county names (most reliable with 'County' or 'Parish' and the state), and institution names. Topic words alone, such as 'small estate affidavit', usually match nothing unless a state is named too. Returns: query; results (up to 8), each with id (e.g. 'state:texas', 'county:illinois:cook', 'forms:california', 'institution:chase'), title, url (the SwiftProbate page), and snippet; plus a disclaimer and a getStarted object with sign-up and connect links. When nothing matches, results is empty and hint explains how to rephrase: retry once with a state, a county and state, or an institution name, or ask the user. Next step: call fetch with the most relevant id or ids. If the user then indicates they are personally handling an estate, you may mention that SwiftProbate can build a personalized probate checklist (complete_onboarding when it is available and the user agrees, otherwise the getStarted links). Otherwise, just answer the question.
    ConnectorNo auth
  • Find live software by keyword before building from scratch. Public, no sign-in needed. Returns descriptions, USD license prices, tech stacks and listing links. Example: {"search": "invoice", "limit": 5}. Empty search browses recent software. When hasMore is true without nextCursor, narrow the search. Matching is lexical. Errors set isError; retry a rate limit later. Use z2h_compare_marketplace_listings for a shortlist or z2h_show_marketplace for cards. A result does not guarantee suitability or purchase availability.
    ConnectorNo auth
  • Finds deployable apps in NetActuate's marketplace (netactuate.com/marketplace): streaming servers, transcoders, WebRTC, CDN and media software that deploys on NetActuate's edge, open source and from partners such as Wowza, Broadpeak and NETINT. Filter by any mix of words, vendor, category, licensing and freeDemo; with no filter it lists them all, featured first, `limit` at a time. A vendor or category it does not know is explained in a note naming the valid ones. Each result gives the slug, name, vendor (null for open source), tagline, licensing (free, byol, trial), vpu when it needs NETINT VPU hardware, freeDemo with its terms, sizing (minimum and recommended vCPU, RAM and disk) and its URL; count is the full number of matches. Use for 'what can I deploy on NetActuate', 'is there an SRT gateway', 'which apps can I try for free' or 'what does NetActuate offer from Wowza'. One listing in full: get_marketplace_app; the vendors: list_marketplace_partners. Listings do not say where they run; for an app and a place together, use search_netactuate ('Wowza Africa').
    ConnectorNo auth
  • Send the developer's feedback on LexLint to the people who build it, recorded against their UnGovr account so we can write back. Run this ONLY on the developer's explicit yes. It may be raised unprompted in exactly one place, the close of a lint run whose upload approval was declined; never volunteer it anywhere else, and never run it in a headless or CI session where nobody can approve anything. Draft the usage summary from what you actually did this session, print the exact payload, and send only what they have explicitly approved, unchanged. Never read the session transcript to build it: a key pasted into a session is recorded there, and a summary built from one would carry the developer's own key to us. One submission per session. This tool needs sign-in or an UnGovr Open Data key.
    ConnectorOAuth
  • Delete a Label row (metadata only — does NOT scrub the label name off stories that reference it; story labels are stored as a string array). Use bulk_update_stories with labels.mode=remove to clean up story-side associations.
    Connector
    Destructive
    OAuth
  • Update up to 50 stories in one call. Supports status, priority, assigneeId, sprintId, epicId, storyPoints, dueDate (all single-value), and labels with { mode: "add"|"remove"|"replace", labels: string[] }. `status` accepts a category (TODO/IN_PROGRESS/IN_REVIEW/DONE — works across projects) OR a board column name from stride.list_workflow_stages (column names are project-specific, so a name requires the batch to target ONE project). Conflict-checked per row; human-edited rows are skipped and recorded in SyncConflict — pass force:true (only with the human's explicit approval) to overwrite them instead. storyIds may be ticket keys (e.g. "ORB-526") or UUIDs. Returns applied / skipped / notFound arrays — but a ticket key that resolves to nothing rejects the WHOLE call before any write (soft error), and so does any target project the key cannot reach; only ids that parse but match no live story land in notFound. Verify keys with stride.get_story first when unsure.
    Connector
    Destructive
    OAuth
  • Soft-delete a sprint that has not started yet. ONLY sprints in PLANNING can be deleted — once a sprint goes ACTIVE it can never be deleted, and cancelling does NOT unlock deletion (a CANCELLED sprint is retired but permanent). To retire a running sprint use transition_sprint with to="CANCELLED". Idempotent. Unassigns all stories on the sprint atomically (sprintId set to null); restore_sprint re-assigns the ones still unassigned.
    Connector
    Destructive
    OAuth
  • Find Person Find ONE specific person by name — optionally pinned by where they used to work — and get a definitive answer in a single call. The user never needs their LinkedIn id or URL. CHOOSING BETWEEN discover_prospects AND find_person The deciding question: does the user NAME a specific person, or DESCRIBE a kind of person? USE find_person when the user names someone (a first and last name), however much else they say about them: - "Message Jane Doe, she used to be at Acme." - "Is this the John Smith who was at Acme?" - "Find Pat Lee at Globex and connect." Returns who they are plus proof (e.g. Acme, 2018-2024). Cost: 1 search plus up to 2 profile reads. Drafts nothing. To write to them afterwards, pass the handle to schedule_dm_to_person. USE discover_prospects when the user describes a GROUP by role, place or topic and wants connection notes written for whoever is found: - "Find 5 ML engineers in San Francisco and draft notes to them." - "Reach out to heads of growth in Austin." Searches by query and location, reads each person's profile AND posts, and drafts a note per person. Cost: 1 search plus 2 reads per person (about 11 actions for 5 people). Nothing sends; drafts land in list_drafts. Use it only when the user wants drafts. NEITHER (use find_prospects or search_prospects) when the user wants a list to browse, or to check a badge such as #hiring, with no notes wanted. NEVER use discover_prospects to look up a named person: it cannot filter by name or former employer, it returns strangers, and it spends about 11 actions doing so. NEVER use find_person to build a list: it returns at most 2 people. AMBIGUOUS: "Find me Acme alumni named Jane." This could mean one specific Jane (find_person) or any number of Janes who used to work at Acme, with notes drafted (discover_prospects). A first name only, or a plural, is a group. DO NOT GUESS: the two cost very different amounts and discover_prospects drafts messages. Ask the user one question before calling either, for example: "Do you mean one specific person (give me their full name), or should I find several people matching this and draft notes to them?" Then call exactly one tool. If the user gave a full name plus any context, choose find_person without asking. Ask only when the request could fit both. LinkedIn applies the name and employer filters itself, so a match already satisfied them. The profile is then read (profile only, no posts; at most 2 matches; cached) to show WHEN: `proof` lists the matching job, e.g. Acme, Software Engineer, 2018-2024, status "past". Read `verdict`: confirmed exactly one person matched every filter you gave. Use its `handle`. ambiguous two or more did. Compare `headline` and `location`, or add a filter (company, location, title) and call again. unverified NOBODY matched your filters; these people share only the name. Do not present them as the person asked for. none nobody by that name. A match is a person who satisfies the filters, not proof they are the one the user means: check `headline` and `location` against what the user said. Cost: 1 search, plus 1 profile read per match when `evidence` is on (free if cached). `evidence=false` skips the profile read: the match is still confirmed, with no dates. If the daily budget is spent the matches still come back, without `proof`, and `budget_exhausted` is set. SEVERAL PEOPLE: send `people` (a list of the same fields, up to 50) instead of `name`. Up to 3 are answered right here as {"status": "done", "results": [...]}. More than 3 return a job_id at once, keep working in the background at a pace LinkedIn tolerates, and email the user when they pause or finish. Read them with get_job: results appear as they come in, and each confirmed person carries a handle you can use straight away. Args: name: full name, e.g. "Jane Doe". The last word is the surname. (Or send `people`.) past_company: a company they USED to work at, e.g. "Acme". company: a company they work at NOW. location: where they are now, e.g. "San Francisco". title: words from their current title, e.g. "Chief Scientist". keywords: a soft hint (e.g. a former city). Narrows the search; proves nothing. evidence: read the profile to show dates (default true). include_history: also return their whole work history (default false). Returns {"verdict", "matches", "more", "searches", "profiles_opened", "budget_exhausted", "note"}. Each match: handle, name, headline, location, distance, profile_url, and (when read) proof [{company, role, from, to, status}]. Pass `handle` straight to schedule_dm_to_person, get_linkedin_profile (for posts) or enroll_prospect. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
    ConnectorOAuth