Skip to main content
Glama
soil-dev

capsulemcp

by soil-dev

create_opportunity

Create a new sales opportunity for a party, placing it in a specific pipeline stage via milestoneId, with optional amount, custom fields, and assignment.

Instructions

Create a new opportunity linked to a party. Requires partyId and milestoneId (which pins the deal to a specific pipeline stage — pipeline is inferred from the milestone). Value is optional but if amount is set, currency must be set too (3-letter ISO 4217 code, e.g. 'USD'). Discover valid milestone ids via list_pipelines + list_milestones first. For multi-party deals, use add_additional_party after creation.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes
valueNo
fieldsNoSet custom field values on this record. PARTIAL UPDATE: only the definitions you list are touched; any field NOT in this array is left unchanged. Discover available definitions via list_custom_fields; read current values via get_opportunity with embed='fields'. Capsule's POST /opportunities accepts the same `fields[]` shape as PUT (inferred by symmetry with the v1.6.5 wire-trace findings on party and project creation — the tenant probed had no opportunity custom fields configured, so this is unverified empirically). Setting custom fields on creation removes the create-then-update ritual.
teamIdNoAssign to team ID (discover via list_teams). Independent from `ownerId` — setting one does NOT clear the other on create. Three ownership shapes are valid: owner alone, team alone, or owner+team (the owner must be a member of the team; users can belong to multiple teams — 422 'owner is not a member of the team' otherwise).
ownerIdNoAssign to user ID. Defaults to the API-token owner when omitted — note that opportunities do NOT inherit owner from the linked party, even though one might expect it. To clear owner later, call update_opportunity with `ownerId: null`. Discover IDs via list_users. WARNING: tenant pipeline / milestone-reached automation can mutate this field post-create — see the `milestoneId` description for details and the chained-PUT workaround.
partyIdNoID of the party this opportunity belongs to
durationNoHow many durationBasis units the contract runs (e.g. 12 with MONTH). Must be null/omitted when durationBasis is FIXED. Wire-verified: POST stores it, PUT changes it, and PUT duration:null with durationBasis:FIXED clears it.
descriptionNo
milestoneIdNoID of the pipeline milestone to place this opportunity at. The milestone implicitly determines the pipeline — there is no separate pipelineId parameter. Discover via list_pipelines / list_milestones. NOTE: some Capsule tenants configure **pipeline / milestone-reached automation rules** that mutate `owner` and/or `team` immediately after creation — e.g. an 'Assign to a Team' action that fires on entry to a specific milestone and has been observed to clear `owner` as an automation side-effect. If you observe a newly-created opp landing with `owner: null` despite passing `ownerId`, the cause is almost certainly a milestone automation on the destination pipeline rather than the connector. Documented workaround: follow `create_opportunity` with an immediate `batch_update_opportunity({items: [{id, ownerId, teamId}]})` carrying both fields — PUT does not re-fire milestone-reached triggers, so the owner sticks.
probabilityNo
durationBasisNoTime unit of the opportunity's contract duration. FIXED means a one-off (no recurring duration) — `duration` must be omitted/null with FIXED (Capsule 422s otherwise; wire-verified). Recurring deals: pair with `duration`, e.g. durationBasis MONTH + duration 12.
expectedCloseOnNoYYYY-MM-DD
trackDefinitionIdsNoTrack definition ids to apply at creation time (creation-only shortcut; use apply_track for existing records). Discover ids via list_track_definitions. Capsule validates each definition's entity scope and returns 422 on mismatch (e.g. "track definition must be for parties"). Wire-verified: the created record carries the track instances immediately.
Install Server

TDQS

A4/5.0
Behavior4/5

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

Annotations only carry readOnlyHint=false and destructiveHint=false, so the description carries the transparency burden and does substantial work: it discloses that tenant automation rules can mutate owner/team post-create, that pipeline is inferred rather than set directly, and notes wire-verified behaviors. No contradiction with annotations — 'create' aligns with readOnlyHint=false and non-destructive intent. Strong behavioral disclosure well beyond the minimal annotations.

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?

The three-sentence description is efficient and front-loaded: purpose first, then core constraints (partyId/milestoneId, value/currency coupling), then discovery and alternative tool routing. No wasted sentences at the top level; the verbosity lives in the schema's per-parameter descriptions, which is appropriate placement.

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

Completeness3/5

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

For a 13-parameter tool with nested objects and no output schema, the description covers the essentials (party linkage, stage pinning, value rules, discovery path, multi-party handling) but has two gaps: the 'requires partyId and milestoneId' claim conflicts with the schema's required:[name], which could mislead an agent about mandatory inputs, and there is no statement about what the call returns on success. These prevent full callability confidence for a tool of this complexity.

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 coverage is 69%, placing the baseline at 3. The description adds value on partyId and milestoneId (pinning stage, pipeline inference) but partially repeats the schema's own rich descriptions (currency-required-when-amount, list_pipelines discovery). A notable discrepancy: the description asserts 'Requires partyId and milestoneId' while the schema marks only name as required — a factual mismatch that weakens the otherwise helpful parameter guidance.

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?

States a specific verb (Create), resource (opportunity), and linkage scope (linked to a party), clearly distinguishing it from siblings like update_opportunity, delete_opportunity, and batch_update_opportunity. The description goes further by naming the two key inputs (partyId, milestoneId) and explaining the milestone→pipeline inference, so an agent knows exactly what this creation tool is for.

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

Usage Guidelines4/5

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

Provides concrete guidance: discover milestone ids via list_pipelines + list_milestones first, and use add_additional_party for multi-party deals — explicitly routing to a sibling. It also notes the chained batch_update_opportunity workaround for milestone automation side-effects. It doesn't enumerate when to favor update_opportunity or batch_update_opportunity for modifications, but the creation-vs-alternative guidance is present and actionable.

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

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/soil-dev/capsulemcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server