Model Context Protocol server for Frontapp API integration. Allows Claude Code to interact with conversations, messages, contacts, teammates, accounts, tags, and inboxes.
This server exhibits significant structural problems that undermine agent usability. While 34 tools are enumerated with basic descriptions, there are critical issues: (1) Severe duplication, tools like 'send_message', 'get_conversation', and 'create_contact' appear multiple times with identical or near-identical definitions (tools #2, #9, #17 for send_message; tools #4, #16 for get_conversation; tools #13, #22 for create_contact), suggesting broken tool registration or sloppy code generation. (2) Many parameter descriptions are generic or missing entirely, e.g., 'Tags to apply' without specifying tag ID format, context, or constraints. (3) No output schemas are visible in the source code provided, the schemas show only input shapes, not what the tools return. (4) Error handling guidance is absent, no recovery hints, no categorization of retryable vs. fatal errors, no guidance on what to do if a lookup fails. (5) Some tools have empty input schemas (e.g., get_teammates, get_tags, get_accounts, get_inboxes all declare `'properties':{}`), making it unclear what parameters are valid. (6) No tool annotations (readOnlyHint, destructiveHint) despite many tools being clearly destructive (archive_conversation, delete operations). (7) Naming conventions are mostly good (verb_noun), but there is no parameter-level consistency, sometimes 'conversation_id', sometimes just 'id'; no suffix-typing for identifiers. The provided source snippet (src/api/tools.ts) shows only a hardcoded GET /tools endpoint with two example tools, not the actual tool registration logic, making it impossible to verify the full implementation.
Add a comment to a conversation
Apply a tag to a conversation
Archive a conversation
Assign a conversation to a teammate
Create a new account
Create a new contact
Create a new contact in Front
Duplicate tool definitions, 'send_message' appears 3 times (tools #2, #9, #17), 'get_conversation' 2 times (#4, #16), 'create_contact' 2 times (#13, #22), 'update_contact' 2 times (#14, #23). This indicates a broken tool registration pipeline and will cause LLM confusion over which variant to call.
Empty input schemas for tools get_teammates (#24), get_tags (#30), get_accounts (#26), get_inboxes (#33), all declare 'properties:{}', making parameter handling ambiguous. Are these truly parameterless or is the schema incomplete?
No output schemas documented for any tool. LLMs cannot plan chaining (e.g., does get_conversation return conversation_id for use in send_message?) or extract required fields for downstream calls. This violates the pattern:tool requirement.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 50 | - | v1 |
Get a specific account by ID
Get a list of accounts
Get a specific contact by ID
Get details of a specific contact by ID
Get a specific conversation by ID
Get details of a specific conversation by ID
Get a list of conversations from Frontapp
Get a specific inbox by ID
Get a list of inboxes
Get details of a specific message by ID
Get a list of tags
Get a specific teammate by ID
Get a list of teammates
List contacts in Front with pagination support
List all messages in a conversation in reverse chronological order (newest first)
List conversations in Front. Returns conversations in reverse chronological order (most recently updated first). Supports pagination and filtering via query parameter.
List teammates in your Front workspace
Remove a tag from a conversation
Send a reply to an existing conversation
Search for conversations using Front search syntax. Supports complex queries with status, tags, assignees, etc.
Send a message to a conversation
Send a new message to a channel (creates a new conversation)
Send a message to a conversation
Update an existing account
Update an existing contact
Update an existing contact
Update conversation properties like assignee, tags, status
Generic parameter descriptions lacking context, e.g., 'Tags to apply' (#1, #2) without clarifying whether tags are IDs or names, or what format they expect. 'Message body' is insufficiently specific (text only? HTML? Markdown?). These force LLMs to guess.
No error handling guidance. If search_conversations returns no results, what should the agent do? If assign_conversation fails because the teammate_id is invalid, should it retry or ask the user? No recovery hints are present.
No tool annotations (readOnlyHint, destructiveHint) despite clear semantic differences. archive_conversation, apply_tag, and update_conversation are mutations; get_conversations, list_contacts are reads. Annotations would help LLMs reason about side effects.
Parameter naming inconsistency, sometimes 'conversation_id', sometimes bare 'id'. No suffix typing (e.g., 'author_id' vs 'assignee_id' are clear, but generic 'id' fields lack context). This violates the 'user_id, user_name, user_email' naming convention.
Pagination parameters present (limit, page_token) but no guidance on total count or whether a next_cursor is provided. LLMs cannot determine if they've reached the end of results.
Required parameter 'handles' in create_contact (#13, #22) is an array of objects, but the object schema is not detailed, no guidance on required/optional sub-fields or expected structure. This forces LLMs to hallucinate the shape.
Tool 'reply_to_conversation' requires 'channel_id' only if type='reply', but this conditional dependency is not documented. LLMs cannot infer when to include vs. omit parameters.