A multi-agent system designed to help users find the best offers for products or services through case management, web searching, website scraping, and vendor email communication.
This server exhibits significant quality gaps across naming, descriptions, and schema documentation. While all 18 tools have basic descriptions and most have input schemas, the quality is inconsistent and falls below production baseline. Tool names follow verb_noun convention adequately (create_case, update_case, get_case, etc.), but parameter descriptions lack specificity and constraint documentation. Output schemas are not documented at all, callers cannot reliably infer response structure or plan downstream tool chains. Error handling provides no recovery guidance. Security concerns: the server accepts sensitive data (emails, phone numbers) and manages external API integrations (Gmail, Google Custom Search) but lacks explicit secret injection patterns, rate limiting, and input sanitization guidance. The prompts feature uses a multi-agent template, but the tool definitions do not support the stated workflow (e.g., no create_offer_batch for bulk processing vendor responses, no confirmation pattern before sending emails despite the template stating 'BEFORE SENDING ANY MESSAGE TO A VENDOR ASK USER FOR PERMISSION').
Create a new case record in the database.
Create a new offer record in the database based on a vendor's response.
Create a new search record for a case.
Create a new user record associated with a case.
Execute a Google Custom Search query and store results in the database.
Retrieve case details from the database by case ID.
View all communications for a specific case.
No output schemas documented for any tool. Callers cannot reliably infer response structure, complicating downstream tool chaining and forcing LLMs to reason about undocumented field names.
Misleading tool naming: 'get_case_offers' accepts offer_id (singular lookup), not case_id (list all offers for case). Name-parameter mismatch causes LLM confusion.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 50 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 43 | - | v1 |
Get an offer record from the database.
View the full conversation with a vendor.
Check for new responses from vendors.
Retrieve user details from the database by user ID.
Mark emails as read after processing.
Reply to a vendor's email.
Scrape a website for contact information (emails, phone numbers).
Send an initial outreach email to a vendor.
Update an existing case with new information. Only update fields that are provided (not None).
Update an existing offer record in the database based on a vendor's response.
Update an existing user record.
execute_google_search combines two responsibilities: executing search + storing results. Should be split into search_with_google_custom_search (returns results) and optionally store_search_results (saves to db), allowing agent composition.
No error handling or recovery guidance. Tools lack descriptions of failure modes, error classification (retryable vs fatal), and actionable recovery steps. E.g., 'user not found' should suggest 'Try create_user() first' or 'No vendors found' should suggest 'Refine search_query and retry'.
Parameter descriptions lack constraint specification. E.g., 'email' parameters have no format validation hints; 'budget' has no min/max range; 'timeline' is free-form string with no examples or enums; 'status' in update_offer has enum in schema but no description text warning of invalid transitions.
Security: send_email_to_vendor accepts vendor_email, vendor_name, vendor_website as user-input parameters. These should be looked up from prior search results or stored records to prevent email injection, phishing simulation, or sending to unvetted addresses. Additionally, prompt states 'BEFORE SENDING ANY MESSAGE TO A VENDOR ASK USER FOR PERMISSION' but no confirmation/dry-run pattern is implemented in the tool.
Gmail integration (send_email_to_vendor, get_unread_vendor_emails, reply_to_vendor_email) requires OAuth credentials but no guidance on credential setup, scope management, or token refresh. Description does not mention permissions required (e.g., 'gmail.send', 'gmail.readonly'). Missing scope declarations.
No pagination support for list-like operations. Tools such as get_unread_vendor_emails, get_case_communications, scrape_website_contacts (which returns lists) lack page/limit/offset parameters, risking context window overflow if results grow large.
Additional_features parameter is present in create_case, update_case, and create_offer but is marked as 'object' with no structure specification. LLMs cannot infer valid fields, constraints, or nesting depth.
No explicit idempotency guidance. State-changing operations (create_case, send_email_to_vendor, mark_email_as_read) should declare idempotency or support deduplication to prevent duplicate records/emails on agent retry.
No rate limiting or timeout guidance for external API calls (Google Custom Search, Gmail API, web scraping). Tools can invoke external services without documented backoff, retry strategy, or rate limits, risking API quota exhaustion or request hangs.