Skip to main content
Glama
FirstReply

FirstReply MCP Server

Official
by FirstReply

Search

search
Read-onlyIdempotent

Find conversations, contacts, knowledge entries, and messages in one call. Returns top matches per type with total counts and supports operators like from:, subject:, is:, has:, before:, after:.

Instructions

Search conversations, contacts, knowledge entries and messages of an organization in one call. Returns the top matches per type with the total count per type. Words are AND-ed and prefix matched. Use "quoted phrases", -word to exclude, and the operators from:, subject:, is:<open|closed|unread|read|assigned|unassigned|ai>, has:<attachment|draft>, before:, after:.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoResults per type (default 5, max 20).
queryYesSearch text, at least 2 characters.
organizationIdYesThe organization id. Use organization_list to find it.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context beyond that: AND-ed/prefix matching semantics, per-type result composition, and the existence of total counts. It stops short of describing pagination or ranking behavior.

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?

Three dense sentences, front-loaded with purpose and return shape before the syntax reference. Every clause carries operational value; nothing is padding.

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?

Read-only/idempotent annotations plus an explicit statement of what is returned (top matches per type with total counts) cover the safety and return-shape questions, and limit/max are in the schema. Minor gaps remain around result ordering, pagination beyond the per-type limit, and empty-result behavior.

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 100%, so the schema already documents organizationId, query and limit, making 3 the baseline. The description goes beyond it by specifying the query grammar (quoted phrases, -word exclusion, from:/subject:/is:/has:/before:/after: operators), which the schema does not express at all.

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 (search) plus the exact resources searched (conversations, contacts, knowledge entries, messages) and the scope constraint ('of an organization in one call'). This multi-type scope distinguishes it from single-type siblings like knowledge_search or conversation_list without the agent needing to open any schema.

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 phrase 'in one call' implies this is the cross-type search to use when several entity types are needed, and the description says what comes back. However, it never explicitly names the alternative (knowledge_search, contact_list, conversation_list) or states when this tool should not be used instead, leaving the routing decision to inference.

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