Skip to main content
Glama

Import many won or lost deals at once

import_win_loss

Bring in deal history in bulk (for a single deal use log_win_loss). Use this when the user has a CRM, spreadsheet or other connected tool holding closed-won/closed-lost deals: read the rows there, then pass them here as raw text, one deal per line, header row first if there is one, exactly as you read them (do not summarize or rewrite). Ripplewatch works out which column is which (so any export layout works), keeps each deal's own close date, reads the reasons into themes, ties tracked competitors to their deals, and suggests competitors it isn't tracking yet. Re-importing the same deals updates them instead of duplicating. Include the close date column if the source has one, and go back as far as the source goes: trends over time need dates and enough history. Ask the user before pulling their data, and only pass rows you actually read. Up to about 600 rows per call.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "text": "<text>"
    },
    "name": "import_win_loss"
  }
}

Input Schema

NameRequiredDescriptionDefault
textYesRaw deal rows, one per line (CSV or plain text), header first if present, verbatim from the source.
sourceNoWhere the rows came from, e.g. 'HubSpot' or 'Salesforce export'.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare that this is not read-only, not destructive, and closed-world, and the description is consistent with that. It adds genuinely useful behavior: idempotent re-import ('Re-importing the same deals updates them instead of duplicating'), automatic column inference, theme extraction, competitor linking and untracked-competitor suggestions, plus a size ceiling ('Up to about 600 rows per call'). It stops short of describing the response or what happens on partial/malformed rows, so it sits above the annotation baseline but is not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose, sibling disambiguation and the data-collection workflow are front-loaded in the first two sentences, which is the right ordering for an agent deciding whether to call. The paragraph is dense but slightly repetitive: 'exactly as you read them (do not summarize or rewrite)' and 'only pass rows you actually read' make nearly the same point, costing a sentence of length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only 2 parameters, no nested objects and no output schema, the description supplies what an agent needs: the workflow (read from source, then pass verbatim), the row/date requirements for downstream trends, idempotency semantics, and the per-call size ceiling. Nothing material for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both `text` and `source` are already documented, and the schema also carries maxLength constraints. The description reinforces the input format ('raw text, one deal per line, header row first, exactly as you read them') but that largely restates the schema, and the `source` parameter is never discussed, so it does not add meaning beyond structured data.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Bring in deal history in bulk') and immediately names the sibling it is not ('for a single deal use log_win_loss'). An agent can route between import_win_loss and log_win_loss without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the triggering condition explicitly ('Use this when the user has a CRM, spreadsheet or other connected tool holding closed-won/closed-lost deals'), names the alternative for the single-deal case, adds a prerequisite ('Ask the user before pulling their data') and a scope exclusion ('only pass rows you actually read'). Nothing about when to select this tool is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.