Remote MCP server providing tools for PostgreSQL database operations, email sending via Microsoft Graph API, web scraping via Firecrawl, and sequential thinking for problem-solving. Deployed on Cloudflare Workers with GitHub OAuth authentication.
The server defines 10 tools with mixed quality. Database tools (listTables, queryDatabase, executeDatabase) have clear schemas and good security separation. Web scraping tools (crawlWebsite, scrapeWebsite, mapWebsite, getCrawlStatus, searchWeb) have detailed parameter schemas but lack output documentation. The sequentialthinking tool has a complex schema with optional fields. Email tool is basic. Most tools lack parameter descriptions in critical places, and output schemas are undocumented. Error handling is present via handleError() helper but recovery guidance is limited. Naming is clear and verb-based across all tools.
Start an asynchronous crawl job on a website and extract content from multiple pages. Best for extracting content from multiple related pages with comprehensive coverage. Returns a job ID for status tracking. This tool is restricted to specific GitHub users.
Execute any SQL statement against the PostgreSQL database, including INSERT, UPDATE, DELETE, and DDL operations. This tool is restricted to specific GitHub users and can perform write transactions. **USE WITH CAUTION** - this can modify or delete data.
Check the status and retrieve results of an asynchronous crawl job started with crawlWebsite. This tool is restricted to specific GitHub users.
Get a list of all tables in the database along with their column information. Use this first to understand the database structure before querying.
Map out a website's structure by crawling and indexing all discoverable URLs. Best for understanding site architecture and finding all pages. This tool is restricted to specific GitHub users.
Output schemas completely undocumented across all tools. LLMs cannot plan downstream tool calls or extract returned data types without knowing result structure.
sendEmail tool description is severely truncated ('Send an email using Microsoft Graph API (Outlook)', 57 chars). Lacks guidance on when to use it vs alternatives, what happens on failure, and expected return structure.
Web scraping tools (crawlWebsite, scrapeWebsite, mapWebsite, searchWeb) lack descriptions of return structure, pagination behavior, and size limits. Tools accept 'limit' params (default 50-100) but no documentation of whether results are paginated or capped.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 77 | 2026-07-28+ | v2 |
| 2026-03-09 | C | 63 | - | v1 |
Execute a read-only SQL query against the PostgreSQL database. This tool only allows SELECT statements and other read operations. All authenticated users can use this tool.
Scrape a single webpage and extract content with various format options. Best for getting detailed content from a specific page. This tool is restricted to specific GitHub users.
Search the web and retrieve results with optional scraping. This tool is restricted to specific GitHub users.
Send an email using Microsoft Graph API (Outlook)
A detailed tool for dynamic and reflective problem-solving through thoughts. This tool helps analyze problems through a flexible thinking process that can adapt and evolve. Each thought can build on, question, or revise previous insights as understanding deepens. When to use this tool: - Breaking down complex problems into steps - Planning and design with room for revision - Analysis that might need course correction - Problems where the full scope might not be clear initially You should: 1. Start with an initial estimate of needed thoughts, but be ready to adjust 2. Feel free to question or revise previous thoughts 3. Don't hesitate to add more thoughts if needed, even at the "end" 4. Only set nextThoughtNeeded to false when truly done
sequentialthinking tool has many optional parameters (isRevision, revisesThought, branchFromThought, branchId, needsMoreThoughts) but lacks explanation of when/how to use them. Parameter descriptions are minimal. This tool serves internal reasoning, its UX for multi-turn reflection is unclear.
Database tools lack input validation error examples. The code checks for write operations and SQL injection, but tool descriptions don't specify what invalid inputs trigger or how LLM can self-correct. Error responses mention constraints but don't list them inline.
scrapeWebsite 'actions' parameter is complex (nested array of objects with type union and conditional fields). No description of valid action sequences, ordering constraints, or error recovery if an action fails mid-sequence.
crawlWebsite and scrapeWebsite accept 'webhook' as 'string or object' but the schema shows union type without clear documentation. When is it a string URL? When is it an object? What shape does the object have?