Skip to main content
Glama
juliano09

rd-station-crm

by juliano09

conectar-rd-station-mcp

Servidor MCP (Model Context Protocol) local que expõe ferramentas do RD Station CRM (contatos, organizações, negócios/deals, pipelines, usuários) para clientes MCP como Claude Code e Codex CLI.

Roda via stdio — o cliente (Claude/Codex) inicia o processo sozinho quando precisa, não é um servidor que fica no ar o tempo todo.

Pré-requisitos

  • Um token de API do RD Station CRM (Configurações → Integrações → API na sua conta RD Station)

  • Claude Code e/ou Codex CLI instalados, se quiser o registro automático

Não precisa ter o Node.js instalado antes — o script de setup verifica e instala uma versão compatível (18+) via nvm se necessário.

Related MCP server: HubSpot CRM MCP Server

Instalação rápida

npm run setup

(se ainda não tiver npm/Node, rode bash scripts/setup.sh direto)

Isso vai:

  1. Checar se o Node.js 18+ está instalado — se não estiver (ou for uma versão antiga), instala via nvm automaticamente

  2. Instalar as dependências (npm install)

  3. Buildar o projeto (npm run build)

  4. Criar o arquivo .env (a partir de .env.example) e pedir seu token do RD Station

  5. Registrar o servidor como rd-station-crm no Claude Code e no Codex CLI, se encontrar os dois instalados na máquina

Instalação manual (passo a passo)

Se preferir fazer na mão, ou se o script não encontrar o Claude/Codex automaticamente:

  1. Instale as dependências e builde

    npm install
    npm run build
  2. Configure o token

    cp .env.example .env

    Abra o .env e preencha:

    RD_STATION_TOKEN=seu_token_aqui
  3. Registre no Claude Code

    claude mcp add rd-station-crm -s user -- node "$(pwd)/dist/index.js"

    Confirme com:

    claude mcp list

    Deve aparecer rd-station-crm ... ✔ Connected.

  4. Registre no Codex CLI

    codex mcp add rd-station-crm -- node "$(pwd)/dist/index.js"

    Se o comando codex não existir no seu PATH, use o caminho do binário do app do ChatGPT/Codex (no Linux costuma ser /usr/lib/chatgpt/resources/codex) no lugar de codex no comando acima.

    Confirme com:

    codex mcp list
  5. Teste Abra uma sessão nova do Claude Code ou do Codex (claude / codex no terminal) e peça algo como:

    lista meus contatos do RD Station

    Se ele chamar a tool rdstation_list_contacts e trazer dados reais, está tudo certo.

Importante sobre o app do ChatGPT (web/desktop)

Esse servidor roda local, via stdio, então funciona com Claude Code e Codex CLI. O app do ChatGPT (Settings → Apps & Connectors → Developer mode) só aceita servidores MCP remotos, via HTTPS — não é possível apontar para um script local. Para usar lá seria necessário hospedar este servidor publicamente e trocar o transporte para HTTP, o que este projeto não faz hoje.

Ferramentas disponíveis

Contatos: rdstation_list_contacts, rdstation_get_contact, rdstation_create_contact, rdstation_update_contact, rdstation_delete_contact

Organizações: rdstation_list_organizations, rdstation_get_organization

Negócios: rdstation_list_deals, rdstation_get_deal, rdstation_create_deal, rdstation_update_deal, rdstation_win_deal, rdstation_lose_deal

Pipelines: rdstation_list_deal_pipelines, rdstation_list_deal_stages

Usuários: rdstation_list_users

Desenvolvimento

Depois de alterar algo em src/, é preciso buildar de novo para o Claude/Codex pegarem a mudança (eles executam dist/index.js, não o .ts):

npm run build

Available Tools

16 tools
rdstation_create_contactA

Create a contact in RD Station CRM. contact is the raw request body per the RD Station CRM API (e.g. { name, emails: [{ email }], phones: [{ phone, type }], organization_id, title }).

ParametersJSON Schema
NameRequiredDescriptionDefault
contactYes

TDQS

A3.7/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden. It does signal mutation via 'Create' and describes the request body format, but it does not disclose side effects, duplicate handling, authentication needs, validation behavior, or what happens on success or failure.

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

Conciseness5/5

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

Two concise sentences with no filler. The primary action is front-loaded, and the second sentence adds a useful payload example without over-explaining.

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 single-parameter create operation, the description covers the core request shape well. However, there is no output schema, no mention of return values, and no caveats about required fields, duplicate contacts, or API-specific failure modes, so some agent-relevant context is still missing.

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

Parameters4/5

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

Schema coverage is 0% and the schema itself is generic (an unconstrained object). The description compensates by explaining that `contact` is the raw request body per the RD Station CRM API and by giving a concrete example with nested fields such as `emails` and `phones`. This adds meaningful semantics beyond the bare schema, though it is not exhaustive.

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 states a specific verb and resource: 'Create a contact in RD Station CRM.' This clearly distinguishes it from sibling tools that list, get, update, or delete contacts, and the first sentence leaves no doubt about the operation.

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

Usage Guidelines3/5

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

Usage is implied by the verb 'Create' and the sibling context, but there are no explicit when-to-use or when-not-to-use instructions. No guidance is given about whether to prefer this over update when a contact may already exist, or about prerequisites such as required fields or organization IDs.

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

rdstation_create_dealB

Create a deal in RD Station CRM. deal is the raw request body per the RD Station CRM API (e.g. { name, deal_pipeline_id, deal_stage_id, contact_ids: [...], organization_id }).

ParametersJSON Schema
NameRequiredDescriptionDefault
dealYes

TDQS

B3.4/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It states that 'deal' is a raw request body — which hints at passthrough behavior — but it never says what happens on success (returned deal object?), whether it auto-creates related records, or what auth/permission requirements exist.

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

Conciseness5/5

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

Two compact sentences, each earning its place: the first states the operation, the second defines the single parameter. No filler, and the key clarification that 'deal' is the raw API body is placed directly with the parameter.

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

Completeness2/5

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

This tool has a complex nested object, no output schema, and no annotations, yet the description never tells the agent how to fill the fields (e.g., list deal pipelines/stages to obtain valid IDs) or mentions that deal_stage_id must belong to the provided deal_pipeline_id. There is also no mention of what the tool returns. For a creation tool in a 15-tool CRM family, this is insufficient.

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

Parameters4/5

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

The schema treats 'deal' as an unrestricted open object with 0% coverage, so any parameter guidance is valuable. The description provides a concrete example shape ({ name, deal_pipeline_id, deal_stage_id, contact_ids: [...], organization_id }), which gives the agent a real starting point. It stops short of marking which fields are required or describing relationships, but it clearly adds meaning beyond 'an object.'

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?

'Create a deal in RD Station CRM' is a specific verb plus resource. The real object ('deal') distinguishes it from sibling tools like create_contact and create_organization, and 'create' separates it from update_deal, win_deal, and lose_deal at the operation level.

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

Usage Guidelines2/5

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

The description gives no guidance on when to select this tool over update_deal, win_deal, or lose_deal, and no explicit scenario such as 'use when a new opportunity is won/prospected.' Usage is only implied by the tool's name.

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

rdstation_delete_contactB

Delete a contact from RD Station CRM by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
contact_idYes

TDQS

B3.3/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It states the deletion but does not mention whether deletion is irreversible, hard or soft, whether associated data is affected, what authentication scopes are required, or what the response looks like. For a destructive operation, this is a significant gap.

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

Conciseness5/5

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

The description is a single efficient sentence with no filler. The core action, target resource, and key parameter are all front-loaded and immediately understandable.

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 one-parameter destructive action with no output schema, the core usage is clear. However, the absence of annotations means the agent is left without expectations about side effects, reversibility, or error behavior. A short caveat or note about deletion consequences would make the description complete.

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?

The input schema provides only the parameter name contact_id and its type string, with 0% schema description coverage. The description adds that the tool deletes by id, which clarifies that contact_id is the identifier of the contact to remove. However, it does not specify the expected ID format, give an example, or explain error conditions.

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 explicitly states the verb 'Delete', the resource 'contact from RD Station CRM', and the lookup method 'by id'. This clearly distinguishes it from sibling tools like rdstation_get_contact, rdstation_create_contact, and rdstation_update_contact.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, nor any prerequisites such as the contact needing to exist before deletion. The operation is implied by the tool name and description, but the description does not help the agent choose among contact-related siblings.

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

rdstation_get_contactA

Get a single contact from RD Station CRM by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
contact_idYesRD Station contact id

TDQS

A4/5.0
Behavior3/5

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

No annotations are present, so the description carries the disclosure burden. 'Get' and 'single' imply a read-only lookup, but the description does not mention response shape, not-found/error behavior, or side effects. This is minimal but not misleading.

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

Conciseness5/5

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

One compact, front-loaded sentence with no filler. Every word contributes to the action, resource, and lookup key.

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

Completeness4/5

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

For a single-parameter read operation, this is essentially complete: it names the action, resource, and required input. It could add response or error expectations, but complexity is low and no output schema exists.

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?

The schema describes the only parameter (contact_id) with 100% coverage, so the baseline is 3. The description adds no format or additional semantic detail beyond what the schema already provides.

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 the verb 'Get', the resource 'single contact', and the lookup mechanism 'by id'. This clearly distinguishes it from rdstation_list_contacts (collection) and from create/update/delete mutations.

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?

The description gives clear context: use this when you have a specific contact_id and need a single record. It does not explicitly name alternatives or exclusions, so it stops short of a 5.

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

rdstation_get_dealB

Get a single deal from RD Station CRM by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
deal_idYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It only says 'get', which suggests a non-mutating read, but there is no information about what happens if the deal does not exist, whether authoritative permissions are required, what the response structure looks like, or any other run-time behavior. This is minimal compared to what is expected in a stateless tool in CRM context.

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

Conciseness5/5

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

The description is a single, directly targeted sentence. It front-loads the resource, the singular scope, and the lookup key ('id'). There is no waste, no restatement of properties, and no extra phrasing that dilutes the core message.

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?

Given that this is a one-parameter simple read tool, the description is minimal but enough to communicate the immediate purpose. However, it omits what the return value will be (no output schema), any error-handling hints, and the behavioral expectations. For a basic get, the tool might be adequate, but with no annotations and no output schema, an agent benefits when the description explains more than a throwaway sentence.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only says 'by id'. This maps the parameter name 'deal_id' to the intended identifier, but adds essentially no richer semantics – it does not specify the format (e.g., numeric vs. UUID), how it is defined by RD Station, or any related constraints. The explanation adds only minimal value, and the schema alone gives name and type only.

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 uses a specific verb ('Get'), a specific resource ('a single deal from RD Station CRM'), and a clear identifier qualifier ('by id'). It obviously distinguishes from sibling deal tools like rdstation_list_deals, rdstation_create_deal, rdstation_update_deal, rdstation_win_deal, rdstation_lose_deal, and follows the same pattern as rdstation_get_contact and rdstation_get_organization.

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

Usage Guidelines3/5

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

The usage is implied: this is the tool to use when an agent needs one deal and has the deal_id. However, the description does not explicitly say when to use it versus list_deals, nor does it state when not to use it (e.g., when you need all filters). No alternative names are mentioned, so the guidance is existing entirely at the implied level.

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

rdstation_get_organizationA

Get a single organization from RD Station CRM by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are present, so the description carries the sole burden of disclosing behavior. The verb 'Get' strongly implies a read-only, non-destructive operation, but the description does not explicitly state that it modifies nothing or mention required authentication, error cases, or return format. It is adequate but minimal.

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

Conciseness5/5

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

The description is a single, front-loaded sentence: 'Get a single organization from RD Station CRM by id.' It contains no filler, no repetition, and no extraneous details. Every word earns its place.

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

Completeness4/5

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

For a simple single-parameter retrieval tool, the description covers the essential purpose and the role of the parameter. It does not explain return format, error handling, or auth, but these are largely inferable for a standard 'get by id' endpoint. The low complexity means this level of detail is nearly sufficient.

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?

The schema has 0% description coverage, and the parameter is a single string named 'organization_id'. The description only says 'by id', which confirms the parameter is the lookup key but adds little beyond the parameter name itself. It provides no format, example, or additional meaning, so it partially compensates for the schema gap but not richly.

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 uses a specific verb ('Get'), a clear resource ('organization'), and a scoping qualifier ('single') with a lookup mechanism ('by id'). This clearly distinguishes it from siblings like rdstation_list_organizations and rdstation_get_contact without needing to inspect schemas.

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

Usage Guidelines3/5

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

The description implies when to use the tool (when you have an organization_id and want a single record) but provides no explicit guidance about when not to use it or which alternative to choose. There is no mention that rdstation_list_organizations should be preferred when browsing without an ID, nor any exclusion conditions.

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

rdstation_list_contactsC

List contacts from RD Station CRM.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, starting at 1
limitNoResults per page

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'List contacts' and does not mention pagination behavior, result ordering, default limit/page, or whether this is a read-only operation. The schema implies pagination through page/limit, but the description adds no behavioral context.

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 description is a single, front-loaded sentence with no filler. It is concise and easy to parse, though the phrase 'from RD Station CRM' adds little beyond the tool name.

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

Completeness2/5

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

In the absence of an output schema and annotations, the description should clarify what the agent can expect from the call. It does not mention that the result is a paginated list, what fields are returned, or any default behavior. For a list tool, this is a notable gap.

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%: both 'page' and 'limit' are already described in the schema. The tool description adds no additional parameter meaning, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb ('List') and resource ('contacts') and identifies the system ('RD Station CRM'), making the core function clear. It is distinguishable from sibling tools like rdstation_get_contact by the plural 'contacts', though it does not explicitly differentiate itself.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as rdstation_get_contact for a single contact or rdstation_create_contact for adding one. Usage is only implied by the word 'List', which is not enough for an agent to confidently select among siblings.

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

rdstation_list_deal_pipelinesA

List deal pipelines (funis) configured in RD Station CRM.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It only restates the list semantics and does not mention read-only behavior, pagination, auth requirements, or whether the result includes nested stages or just top-level pipeline objects.

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

Conciseness5/5

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

The description is a single, clear sentence with no filler. The verb and object are front-loaded, making it immediately scannable and appropriately concise for a parameterless list operation.

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

Completeness4/5

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

For an operation with no parameters and a straightforward purpose, the description is mostly complete enough for an agent to select and invoke it. It does not describe the returned data shape, but 'List deal pipelines' strongly implies the return value, and no output schema is required for a simple enumeration.

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

Parameters4/5

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

The tool takes zero parameters, so the schema has no parameter details to supplement. The description's identification of the resource is sufficient, matching the baseline of 4 for a parameterless tool.

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 uses a specific verb ('List') and a specific resource ('deal pipelines (funis)') within a named system (RD Station CRM). The resource name itself distinguishes this from sibling tools such as rdstation_list_deals and rdstation_list_deal_stages.

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

Usage Guidelines3/5

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

The use case is implied: an agent will call this when it needs the set of configured deal pipelines in RD Station CRM. However, the description gives no explicit when-to-use or when-not-to-use guidance relative to sibling tools, so the agent must infer the boundary.

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

rdstation_list_dealsB

List deals (negócios) from RD Station CRM.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, starting at 1
limitNoResults per page

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full responsibility for behavioral disclosure. 'List deals' conveys a read operation but does not mention pagination behavior, sorting, filtering, returned data shape, or authentication expectations. The description is not misleading, but it is too sparse to be behaviorally transparent.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that states the verb, resource, and system without filler. The Portuguese gloss 'negócios' adds helpful localization context without bloating the text. There is no wasted wording.

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

Completeness4/5

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

For a simple paginated list operation with optional parameters fully covered by the schema, the description plus schema is nearly complete. The only notable gap is the absence of an output schema or any description of the response shape, but this is a minor issue for selecting and invoking the tool.

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?

The input schema already documents both parameters with clear descriptions: page number starting at 1 and results per page. With 100% schema coverage, the description does not need to add parameter detail, and it does not. This matches the baseline expectation of 3.

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

Purpose4/5

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

The description uses a specific verb ('List'), a clear resource ('deals'), and a system ('RD Station CRM'), which makes the tool's purpose immediately understandable. It also distinguishes itself from sibling list tools for contacts, organizations, pipelines, and stages. However, it does not explicitly state scope such as 'all deals' or clarify that this is a paginated listing, so it stops short of a 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as rdstation_get_deal for a single deal or the other list_* siblings. There is no mention of conditions, exclusions, or a suggested selection path. Usage must be inferred entirely from the tool name and generic context.

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

rdstation_list_deal_stagesA

List the stages of a deal pipeline in RD Station CRM. Omit deal_pipeline_id to list all pipelines with their stages.

ParametersJSON Schema
NameRequiredDescriptionDefault
deal_pipeline_idNo

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses the key behavioral distinction (omitting the ID returns all pipelines with stages), which is useful. However, it doesn't mention pagination, ordering, or whether stages are returned nested within pipelines, which would be helpful for a list operation.

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

Conciseness5/5

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

Two sentences with no wasted words. The core action is front-loaded, and the key parameter behavior is stated immediately after. Every sentence earns its place.

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

Completeness4/5

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

For a simple list tool with one optional parameter and no output schema, the description is largely complete. It explains the parameter's optionality and the resulting behavior. Minor gaps like pagination or response format are not critical for a simple list operation, but would push it to a 5.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It does explain the only parameter's behavior: omitting deal_pipeline_id lists all pipelines with their stages, implying that providing it filters to a specific pipeline. This adds meaning beyond the bare schema property definition.

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 clearly states the tool lists deal pipeline stages in RD Station CRM, with a specific verb ('List') and resource ('stages of a deal pipeline'). It also distinguishes itself from the sibling rdstation_list_deal_pipelines by focusing on stages rather than pipelines themselves.

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?

The description provides clear usage context: omit deal_pipeline_id to list all pipelines with their stages, implying that providing the ID filters to a specific pipeline. It doesn't explicitly name alternatives or exclusions, but the context is clear enough for an agent to decide when to use it.

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

rdstation_list_organizationsB

List organizations (companies) from RD Station CRM.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, starting at 1
limitNoResults per page

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. The word 'List' implies a read-only operation, but nothing is stated about pagination behavior, ordering, default limit, whether deleted organizations are included, rate limits, or the expected response format. The description does not go beyond what the tool name already implies.

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

Conciseness5/5

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

The description is a single, direct sentence with no extraneous words. It front-loads the primary action and resource immediately. There is absolutely no fluff, even though additional behavioral details are absent.

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 simple list tool with two self-documented pagination parameters and no output schema, the description barely meets the minimum. An agent can infer a typical list call, but the description does not say what is returned (fields, organization entities) or note any default ordering/filtering. Given the tool’s low complexity, this is acceptable but not thorough.

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?

The input schema already documents both page and limit with descriptions ('Page number, starting at 1' and 'Results per page'), so schema coverage is 100%. The description adds no further meaning about how these parameters interact, such as the effective limit cap of 200 or cursor-related behavior. Thus, a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly identifies the action ('List') and the resource ('organizations (companies)') from RD Station CRM. It is distinguishable from siblings like rdstation_get_organization by the plural/verb contrast, and from list_contacts/list_deals by the resource name. It lacks an explicit scoping statement such as 'no filters,' but the core purpose is clear.

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

Usage Guidelines2/5

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

The description offers no guidance on when to choose this tool over rdstation_get_organization, rdstation_list_contacts, or other list tools. The agent must infer from the name and the single sentence. There is no suggestion of when to use it when filtering, sorting, or pagination needs arise.

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

rdstation_list_usersA

List users (team members) from RD Station CRM.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, starting at 1
limitNoResults per page

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'List' conveys a read-only operation, but the description does not mention pagination behavior, response format, permissions, or rate limits. This is a meaningful gap for an unannotated tool.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. It clearly names the action and resource without redundancy.

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?

The tool is simple, with two optional and fully documented parameters, so a minimal description is acceptable. However, with no annotations and no output schema, the description leaves pagination behavior and return shape unspecified, making it merely adequate rather than complete.

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?

Both parameters (page and limit) are fully documented in the input schema with 100% coverage, so the description does not need to repeat their semantics. The baseline of 3 applies because the description adds no extra parameter context.

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 states a specific verb ('List'), resource ('users (team members)'), and product scope ('RD Station CRM'). It distinguishes this tool from the sibling contact, organization, and deal tools by naming a unique resource.

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

Usage Guidelines3/5

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

The description implies use when the agent needs to retrieve team members, but it gives no explicit when-to-use guidance or exclusions. Since there is no sibling user-listing tool, the ambiguity is low, but the guidance is still only implicit.

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

rdstation_lose_dealC

Mark a deal as lost in RD Station CRM, optionally with a lost reason id and note.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
deal_idYes
deal_lost_reason_idNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description must carry the full behavioral burdenable. It states the action 'Mark a deal as lost' but does not disclose side effects such as whether the deal's stage changes permanently, whether associated automations trigger, or whether the operation can be undone. This is minimal disclosure for a mutating workflow step.

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

Conciseness5/5

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

The description is one compact sentence with no filler. The core action is front-loaded, and the optional inputs are mentioned without redundant detail. It is appropriately sized for the tool's simplicity.

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

Completeness2/5

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

While the tool is simple, the description still omits important contextual guidance: when to choose this over rdstudio_update_deal or rdstudio_win_deal, whether any side effects occur, and the significance of the deal_lost_reason_id. Without an output schema or annotations, the description alone is not enough for an agent to confidently invoke this correctly in all situations.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the parameters. It only loosely mentions 'a lost reason id and note', which maps to deal_lost_reason_id and note, but it does not clarify formats or relationshipscars. The required deal_id is also not explicitly described, although its purpose is inferable from the tool name.

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

Purpose4/5

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

The description uses a clear verb and resource: 'Mark a deal as lost in RD Station CRM'. It adds optional inputs, which makes the tool's purpose recognizable. It does not explicitly contrast itself with siblings like rdstation_update_deal or rdstation_win_deal, but the meaning is still unlikely to be confused.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool instead of rdstation_update_deal or rdstation_win_deal. There is no mention of prerequisites, whether a lost reason is required by certain pipelines, or whether this is the correct path for changing deal status versus other edit operations.

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

rdstation_update_contactC

Update fields of an existing contact in RD Station CRM.

ParametersJSON Schema
NameRequiredDescriptionDefault
contactYes
contact_idYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description must carry the full burden of behavioral disclosure. It states 'existing contact,' which implies a precondition that the contact must already exist, but it does not mention whether updates are idempotent, what happens to unspecified fields, permission requirements, or any side effects. The description is too sparse to guide safe usage.

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

Conciseness5/5

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

The description is a single, direct sentence with no filler words. It is front-loaded with the verb and resource, and every word earns its place. For a simple update tool, this level of conciseness is appropriate, even though other dimensions lack depth.

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

Completeness1/5

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

The tool has a nested object parameter and no output schema, but the description gives no details on how to construct the 'contact' object, what fields are supported, or what the response looks like. An agent would have to infer too much, making this incomplete for correct invocation.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate. It does not mention either parameter ('contact_id' or 'contact') or explain how to identify the contact or what fields can be updated. The description adds no meaning beyond the raw schema, leaving the agent to guess the structure of the 'contact' object and the format of 'contact_id'.

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 uses a specific verb ('Update') with a clear resource ('fields of an existing contact in RD Station CRM'), and the verb differentiates it from sibling tools like create_contact, delete_contact, and get_contact. An agent can immediately identify what this tool does without cross-referencing.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention that it's for modifying existing contacts only, note prerequisites (e.g., the contact must already exist), or suggest when to use create or get instead. There is no indication of exclusions or conditions.

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

rdstation_update_dealC

Update fields of an existing deal in RD Station CRM.

ParametersJSON Schema
NameRequiredDescriptionDefault
dealYes
deal_idYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description carries the full disclosure burden. It only says 'update fields' and does not mention side effects, partial-update behavior, permissions, reversibility, or what a successful response looks like.

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?

One short declarative sentence with no filler, and the key verb and resource are front-loaded. It is concise, though it sacrifices specificity in parameter and behavior details.

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

Completeness2/5

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

With no annotations, no output schema, an unspecified nested deal object, and no usage guidance, an agent cannot confidently construct a correct call. The description fails to explain the expected shape of the deal object or the outcome of the update.

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

Parameters2/5

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

Schema description coverage is 0%, and the 'deal' object is opaque with arbitrary properties. The description adds only that fields are updated, not which fields are valid, how the deal object should be structured, or what deal_id means beyond its name.

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 operation ('update fields') and resource ('existing deal in RD Station CRM'), clearly distinguishing it from sibling tools like create_deal, get_deal, win_deal, and lose_deal.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as update_contact, or when win_deal/lose_deal would be more appropriate. It implies an existing deal but provides no prerequisites, exclusions, or selection criteria.

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

rdstation_win_dealB

Mark a deal as won in RD Station CRM.

ParametersJSON Schema
NameRequiredDescriptionDefault
deal_idYes

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral details. It reveals the mutation ('mark as won') but not side effects, reversibility, required permissions, or what happens to a deal already won or lost. This is a significant gap for a state-changing tool.

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

Conciseness5/5

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

One clear sentence with no filler. The action, resource, and system are stated compactly and the sentence earns its place.

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

Completeness2/5

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

For a mutation with no annotations and no output schema, the definition is incomplete: it doesn't describe return values, side effects like setting a close date, or expected behavior on already-won/lost deals. An agent can make the call but cannot predict the outcome.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not compensate: it never explains deal_id's format or that it is the RD Station deal identifier beyond what the name implies. The single parameter is self-evident in context, but the definition adds no real semantic value.

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

Purpose4/5

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

The description states a clear action ('Mark a deal as won') and a specific resource (deal in RD Station CRM), so an agent can distinguish it from siblings like rdstation_lose_deal. It lacks an explicit mention of the alternative operation, but the verb and target state are unambiguous.

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

Usage Guidelines3/5

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

The intended use is implied: call this when a deal reaches a won state. However, the description gives no explicit guidance about when not to use it or when to prefer update_deal/lose_deal, so usage guidance is only implicit.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 16 tool updatesv1.0.0
    • First observedrdstation_create_contact
    • First observedrdstation_create_deal
    • First observedrdstation_delete_contact
    • First observedrdstation_get_contact
    • First observedrdstation_get_deal
    • First observedrdstation_get_organization
    • First observedrdstation_list_contacts
    • First observedrdstation_list_deal_pipelines
    • First observedrdstation_list_deal_stages
    • First observedrdstation_list_deals
    • First observedrdstation_list_organizations
    • First observedrdstation_list_users
    • First observedrdstation_lose_deal
    • First observedrdstation_update_contact
    • First observedrdstation_update_deal
    • First observedrdstation_win_deal

TDQS

A3.5/5.0

Scored across 16 tools

Disambiguation5/5

Each tool targets a distinct resource-action pair: contact CRUD, organization read, deal management, pipeline/stage listing, and user listing. Actions like win_deal and lose_deal are clearly separate from generic update_deal, so there is no real ambiguity.

Naming Consistency5/5

All tools share the rdstation_ prefix and follow a consistent snake_case verb_noun pattern (list_contacts, get_contact, update_deal, win_deal). The naming is predictable and makes the tool family easy to navigate.

Tool Count4/5

At 16 tools, the set is at the upper edge of the ideal range but each tool maps to a meaningful CRM operation. The breakdown across contacts, deals, organizations, pipelines, and users is reasonable, though it is slightly heavy.

Completeness3/5

Contacts have full CRUD coverage and deals cover the main lifecycle including win/lose, but organizations are read-only with no create/update/delete. There is also no deal deletion, which leaves notable lifecycle gaps for the stated CRM domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

  • API-first CRM for LLMs - contacts, companies, deals and activities over a native MCP server.

  • The HubSpot MCP Server acts as a bridge that enables AI assistants and Large Language Models to securely interact with HubSpot CRM data through natural conversation, without requiring users to understand complex API structures. It provides read-only access to standard CRM objects (contacts, companies, deals, tickets, products, invoices, and more) and their associations, secured via OAuth 2.0, allowing AI agents to perform tasks like summarizing deals, fetching company updates, and looking up record changes.

  • The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.

  • Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Read-only MCP server that exposes the Poli Júnior Pipedrive CRM to Claude as composable tools.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that provides AI assistants with full access to HubSpot CRM. Manage contacts, companies, deals, pipelines, and associations directly from Claude, Cursor, or any MCP-compatible client.
    1 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for Pipedrive API v2, enabling management of deals, persons, organizations, products, activities, and pipelines through natural language in MCP clients like Cursor and Claude Desktop.
    28 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for RD Station Marketing enabling AI agents to manage contacts, conversion events, webhooks, and account info via OAuth 2.0.
    MIT