ziggy-mcp
Allows searching emails, automating outreach, and reading unread emails.
Enables calendar sync to track meetings and follow-ups using Google Calendar.
Provides tools for managing revenue tracking, lead pipeline, knowledge matrix, task management, and analytics through a Google Sheet backend.
Allows browser automation for job search, proposal submission, and account management on Upwork.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ziggy-mcpShow me my revenue dashboard"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Ziggy MCP
A Model Context Protocol (MCP) server that connects Claude AI to Google Sheets for automated revenue tracking, lead management, and business operations.
Features
๐ Dashboard: Real-time revenue metrics and KPIs
๐ฏ Lead Pipeline: Track prospects from first contact to close
๐ง Gmail Integration: Search emails and automate outreach
๐ Calendar Sync: Track meetings and follow-ups
๐ Knowledge Matrix: Development log with timestamp tracking
โ Task Management: Prioritize and track project tasks
๐ Analytics: Daily metrics and performance tracking
Related MCP server: Revenue Engine MCP
Prerequisites
Node.js 18.0.0 or higher
Google Account with Sheets and Gmail access
Claude Desktop or compatible MCP client
Google Apps Script (for backend API)
Playwright (for browser automation)
Installation
1. Clone the Repository
git clone https://github.com/yourusername/ziggy-mcp.git
cd ziggy-mcp2. Install Dependencies
npm run setup
# This installs Node packages AND Playwright browsersManual alternative:
npm install
npx playwright install chromium3. Set Up Google Sheets Backend
Create a new Google Sheet
Go to Extensions > Apps Script
Delete any existing code
Copy all files from
/apps-scriptdirectory:Code.js- Sheet setup scriptAPI.js- Main API handlerscalendarSync.js- Calendar integrationappsscript.json- Manifest
Click Save (disk icon)
Click Run > setupRevenueEngine
Authorize the script when prompted
Wait 30-60 seconds for completion
Deploy as web app:
Click Deploy > New deployment
Type: Web app
Execute as: Me
Who has access: Anyone
Click Deploy
Copy the Web app URL
4. Configure the MCP Server
Edit index.js and update the API URL:
const API_URL = "YOUR_GOOGLE_APPS_SCRIPT_WEB_APP_URL";5. Connect to Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"ziggy": {
"command": "node",
"args": ["/absolute/path/to/ziggy-mcp/index.js"]
}
}
}Replace /absolute/path/to/ziggy-mcp/ with your actual installation path.
6. Restart Claude Desktop
Quit and reopen Claude Desktop to load the MCP server.
Browser Automation Setup
Setting Up Authenticated Sessions
For Upwork, LinkedIn, and other platforms:
Step 1: Open browser in visible mode
Open Upwork in browser with visible modeStep 2: I'll open a browser window - YOU log in manually
Step 3: Save the session
Save browser session as "upwork"Step 4: Test it
Browse upwork.com using saved sessionSupported Platforms
โ Upwork - Job search, proposal submission
โ LinkedIn - Profile research, connection requests
โ Any website - Custom scraping and automation
Security Notes
Sessions stored locally in
sessions/folderNEVER commit session files to git
Sessions contain your auth tokens
Expire after ~30 days
Re-authenticate when needed
Usage
Basic Commands
Get Dashboard:
Show me my revenue dashboardView Pipeline:
What leads are in my pipeline?Add a Lead:
Add a new lead: Acme Corp, contact John Smith, email john@acme.comCheck Gmail:
Search my unread emailsLog Development Work:
Log to knowledge matrix: Fixed authentication bug in Gmail integration [45m]Knowledge Matrix
The Knowledge Matrix is a structured development log that tracks:
๐ Bugs & Fixes - Issues and resolutions
โจ Features Added - New functionality
๐งช Testing Results - Test outcomes
๐ฏ Decisions & Direction - Strategic choices
๐ Documentation Updates - Doc changes
๐ Next Session Goals - Future work
Write Entry:
Write matrix entry for Bugs & Fixes: "3:45pm EST ๐[BUG-001] Fixed Gmail auth timeout [30m]"Query Matrix:
Search matrix for "authentication"Daily Summary:
Generate matrix summary for todayBrowser Automation
Take Screenshot:
Take a screenshot of competitor-site.comExtract Data:
Extract pricing from acme.com/pricingFill Form:
Fill the contact form at example.com with lead data for John DoeResearch:
Browse to linkedin.com/company/acme and extract company infoAutomated Outreach (after session setup):
Search Upwork for "web automation" jobs and show top 5Project Structure
ziggy-mcp/
โโโ index.js # Main MCP server
โโโ package.json # Node dependencies
โโโ browser/ # Browser automation
โ โโโ playwright.js # Core browser functions
โ โโโ upwork.js # Upwork automation
โ โโโ linkedin.js # LinkedIn automation
โโโ apps-script/ # Google Apps Script files
โ โโโ Code.js # Sheet setup
โ โโโ API.js # API endpoints
โ โโโ calendarSync.js # Calendar integration
โ โโโ appsscript.json # Manifest
โโโ sessions/ # Saved browser sessions (gitignored)
โโโ screenshots/ # Captured screenshots (gitignored)
โโโ docs/ # Documentation
โ โโโ MATRIX.md # Knowledge Matrix guide
โ โโโ BUG-TRACKING.md # Bug tracking system
โ โโโ BROWSER-GUIDE.md # Browser automation guide
โโโ README.md # This fileSecurity & Privacy
All data stored in your Google Sheets
API calls authenticated through Google Apps Script
No external databases or third-party services
File system access restricted to project directory
Gmail read-only access (send requires explicit approval)
Troubleshooting
MCP Server Not Connecting
Check Claude Desktop config path is correct
Verify Node.js version:
node --version(should be โฅ18.0.0)Check console:
Cmd+Shift+Iin Claude DesktopVerify API_URL is set correctly in
index.js
Google Apps Script Issues
Ensure script is deployed as web app
Check execution permissions (should be "Anyone")
Re-authorize if needed: Run > setupRevenueEngine
Check Apps Script logs: View > Logs
Gmail Integration
Ensure Gmail API is enabled in Apps Script
Check OAuth scopes in
appsscript.jsonRe-authorize if permissions changed
Development
Running Locally
node index.jsManaging Apps Script
Install clasp for local Apps Script development:
npm install -g @google/clasp
clasp login
clasp pull # Download from Google
clasp push # Upload to GoogleDebugging
Enable debug logging in index.js:
const DEBUG = true;Logs written to debug.log in project directory.
Roadmap
Add Slack integration
Export reports to PDF
AI-powered lead scoring
Automated follow-up reminders
Invoice generation
Team collaboration features
Contributing
Fork the repository
Create a feature branch:
git checkout -b feature/amazing-featureCommit changes:
git commit -m 'Add amazing feature'Push to branch:
git push origin feature/amazing-featureOpen a Pull Request
License
MIT License - see LICENSE file for details
Support
๐ง Email: support@example.com
๐ฌ Issues: GitHub Issues
๐ Docs: Wiki
Acknowledgments
Built with Model Context Protocol
Powered by Claude AI
Google Sheets integration via Apps Script
Made with โค๏ธ for solopreneurs and small teams
Available Tools
13 toolsadd_leadC
Add a new lead to the pipeline
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| companyName | Yes | ||
| contactName | No | ||
| contactEmail | No | ||
| estimatedValue | No |
TDQS
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. It only restates that a lead is added; it does not disclose side effects, idempotency, validation requirements, or whether the operation can fail. This is a minimal description that goes no further than the tool's name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler. It is front-loaded with the action and resource, but its brevity is also the reason other dimensions lack substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with no schema descriptions, no output schema, and no annotations, a one-line statement is highly incomplete. The agent is left without context about required fields, expected behavior, or how this fits compared with sibling tools like update_lead.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, and the description provides no parameter information. With 5 parameters, including required companyName, the description should compensate for the low schema coverage but does not, so parameters carry no additional meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Add a new lead' and names the pipeline as the target context. It is specific enough to distinguish from siblings like update_lead, though it does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 update_lead or other sibling tools. The pipeline mention implies a context, but there is no explicit when-to-use or when-not-to-use guidance, leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browse_pageB
Navigate to URL and return page content
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| session | No |
TDQS
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. It reveals only that the tool navigates and returns page content, but does not disclose side effects, session reuse, rendering behavior, error handling, or what form 'page content' takes. This is too thin for a browser tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or repetition. Every word contributes to stating the action and output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, and the likely importance of the optional session parameter, the description is incomplete. It does not explain how sessions work, what kind of content is returned, or what constraints apply to the URL, making reliable invocation harder.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 implicitly explains the 'url' parameter through 'Navigate to URL', but the optional 'session' parameter is completely unexplained, and no additional meaning is added beyond the raw schema for either parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Navigate'), a clear resource ('URL'), and the expected output ('return page content'). This distinguishes browse_page from siblings like take_screenshot and save_browser_session, which perform different browser-related actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 browse_page versus alternatives such as take_screenshot for visual captures or save_browser_session for session persistence. No context, prerequisites, or exclusions are provided, leaving tool selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dashboardB
Get current revenue dashboard with all key metrics
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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. It states that this is a 'get' operation but doesn't describe return format, data freshness, required permissions, or any side effects; it adds little beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient, front-loaded sentence with no filler. Every word contributes to identifying the resource and content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter getter, the description lets an agent invoke the tool, but there is no output schema and no annotations, so the agent has no detail about the response structure or what 'all key metrics' concretely includes. It is minimally complete but leaves room for ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty, so a baseline of 4 applies. There are no parameter semantics for the description to clarify.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb and resource: 'Get current revenue dashboard with all key metrics.' It distinguishes itself from sibling get_pipeline by specifying 'revenue dashboard,' though it doesn't enumerate the metrics or further delimit scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 versus alternatives such as get_pipeline. The phrase 'revenue dashboard' implies a use case, but there are no explicit conditions, exclusions, or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_email_contentC
Get full content of an email thread
| Name | Required | Description | Default |
|---|---|---|---|
| threadId | Yes |
TDQS
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 restates that the tool gets email content, without clarifying what 'full content' includes, whether attachments are returned, if authentication is required, or whether the operation is read-only. It is not misleading, but it is minimally informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It communicates the essential action and object clearly without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter retrieval tool, the description provides a minimum viable level of context. However, given the absence of annotations, an output schema, and usage guidance relative to search_gmail, an agent would likely need to infer how to obtain a valid threadId and what the returned content looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema shows a single required threadId parameter with no description, giving 0% schema description coverage. The description implies that threadId identifies an email thread, but it does not explain the expected format, where the ID comes from, or any constraints. The parameter name is somewhat self-explanatory, but the description adds little beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('full content of an email thread'), making the core operation clear. It does not explicitly distinguish itself from siblings like search_gmail, but the phrase 'full content' implies a retrieval operation rather than a search or listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives such as search_gmail. There is no mention that this should be called after finding a thread ID via search, nor any indication of when a different retrieval tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipelineA
Get all leads in the pipeline
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Get' implies a read operation, but the description does not disclose pagination, result limits, response shape, or any side effects. For a tool with no structured safety annotations, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the tool's purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, the description is mostly sufficient: an agent knows it will retrieve all leads in the pipeline. Minor gaps like return format or error behavior exist, but they are not critical for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema fully covers inputs (vacuously) and the baseline is 4. The description reinforces the global scope ('all leads') without needing to describe individual parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Get') and resource ('all leads in the pipeline'), clearly distinguishing this from mutation siblings like add_lead/update_lead and from get_dashboard. It does not explicitly differentiate from other read tools, but the resource is specific enough to avoid major ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied: use when you need all leads in the pipeline. There is no explicit guidance about when to choose this over alternatives or any exclusions, but given its simple retrieval role, the implied usage is reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_matrixC
Search Knowledge Matrix
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It only says 'Search,' which implies a read operation, but it does not disclose whether the search is read-only, how results are returned, whether there are rate limits, or any other behavioral constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three words with no padding, so it is concise and front-loaded. However, it is so terse that it leaves important semantic gaps, so it is not fully appropriately sized for an opaque tool with no annotations or output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool, the description still provides insufficient context: no annotations, no output schema, and no explanation of what the Knowledge Matrix contains or how results are presented. An agent would have little basis for knowing whether to call query_matrix instead of siblings like get_pipeline or search_gmail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 undocumented 'keyword' parameter. It does not explain matching rules, accepted formats, case sensitivity, or how the keyword is interpreted beyond the obvious implication that it is a search term.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb ('Search') and a resource ('Knowledge Matrix'), so it is not a pure tautology; however, it never defines what the Knowledge Matrix is or what kind of results a query returns, leaving the tool's exact purpose vague. It also does not differentiate it from sibling tools like search_gmail or get_pipeline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives. The description does not mention exclusions, fallback tools, or any condition that should trigger selection of query_matrix over other lookup-oriented siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileB
Read file contents
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of safety disclosure. 'Read file contents' unambiguously signals a non-destructive read-only operation, which is the key behavioral trait, but it adds nothing about permissions, missing-file errors, encoding, or path resolution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only three words with no filler or repetition. It is front-loaded, concise, and every word adds meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-output-schema tool, 'Read file contents' plus the path property provides the minimum viable information to attempt a call. It is incomplete regarding error behavior, return format, and alternatives, but the simple tool shape keeps the gap modest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 explain the path parameter beyond what the schema already states. It does not mention whether paths are absolute or relative, supported file types, or how path relates to the current working directory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('read') and resource ('file contents'), and the read intent distinguishes it from siblings like write_file. However, it does not elaborate on what kinds of files it can read or how it relates to other file-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to prefer this tool over alternatives such as write_file or get_email_content. The description does not mention prerequisites, exclusions, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_browser_sessionD
Save browser session
| Name | Required | Description | Default |
|---|---|---|---|
| sessionName | Yes |
TDQS
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 explaining side effects. It only indicates 'save,' leaving unclear whether this overwrites an existing session, where the session is stored, whether it is persistent, or what happens on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is extremely short, but this is under-specification rather than conciseness. Every word aligns with the name, yet it omits essential behavioral and uusge information needed for effective tool invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a persistence action with no annotations and no output schema, the description must clarify what state is changed, how the session is identified, and what the caller should expect. None of that information is present, so the tool cannot be invoked confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema shows a single string parameter 'sessionName' with no description, and the tool description does not clarify expected format, naming rules, or semantics. The parameter name is somewhat self-explanatory, but with 0% schema description coverage, the description should compensate and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a direct restatement of the tool name: 'Save browser session' adds no detail beyond the name itself. It is not misleading, but it does not explain what a browser session is or what saving entails, and it does not differentiate from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, what prerequisites exist, or whether an active browser session must be present. The description only states the action without any context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_gmailC
Search Gmail inbox
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| maxResults | No |
TDQS
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 says 'Search Gmail inbox' and does not mention authentication needs, rate limits, pagination behavior, result format, or whether the search uses Gmail query syntax. The operation appears read-only, but that is implicit rather than stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with no wasted words, and the core action is front-loaded. However, it may be too terse to be genuinely helpful, sacrificing useful context for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and no parameter descriptions, the description is insufficiently complete for reliable invocation. An agent would not know what the return value looks like, whether maxResults has a limit, or what query syntax is accepted, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning to the 'query' or 'maxResults' parameters. The parameter names are mildly self-explanatory, but the description does not clarify expected formats, defaults, or constraints, so it fails to compensate for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Search') and a specific resource ('Gmail inbox'), making the core purpose immediately understandable. It does not, however, differentiate itself from the sibling tool 'get_email_content', which could plausibly overlap in purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives like get_email_content, nor are any exclusions or prerequisites mentioned. The usage context must be inferred entirely from the tool name and short description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
take_screenshotC
Capture screenshot of webpage
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| filename | No |
TDQS
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. It only states the action of capturing a screenshot and does not mention navigation behavior, viewport handling, file output, or potential side effects on the browser session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler or redundant wording. It is concise, though the brevity borders on under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and zero parameter documentation, the description is too sparse for reliable invocation. It does not state what happens after the screenshot is captured, whether a filename is required, or what the tool returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 explain the 'url' or 'filename' parameters at all. The agent receives no additional meaning beyond the parameter names and types already visible in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'capture' with the object 'screenshot of webpage', clearly identifying the primary action and resource. However, it does not explicitly differentiate this from sibling tools like browse_page or save_browser_session, so it is clear but lacks sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 browse_page or save_browser_session. There is no mention of context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_leadC
Update an existing lead
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| leadId | Yes | ||
| status | No |
TDQS
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 fails to state whether the update is a partial merge or full replacement, whether notes/status overwrite prior values, how a non-existent leadId is handled, or whether there are side effects. For a mutation tool, this is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The four-word sentence is short, but this is under-specification rather than earned conciseness. There is no front-loading of critical scoping or behavior because there is essentially no content beyond the tool's name restated in sentence form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool with three parameters, no annotations, no output schema, and zero schema description coverage. The description does not explain update semantics, valid status values, partial-update behavior, or the response shape. An agent cannot confidently invoke this tool correctly from the information provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description mentions no parameters at all. The agent receives no help understanding leadId, notes, or status beyond their names and types, and the description does nothing to compensate for the schema's lack of documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('update') and resource ('existing lead'), and the word 'existing' implicitly contrasts with sibling add_lead's create semantics. It is clear enough for an agent to distinguish a modification operation from the read-oriented siblings, though it does not name the alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description gives no indication of when to use update_lead versus add_lead, no prerequisite (e.g., the lead must already exist), and no exclusions or context about typical workflows. The single declarative sentence leaves tool selection entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileD
Write file contents
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| content | Yes |
TDQS
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 disclosing behavior, but it says nothing about overwrite semantics, path handling, permissions, or failure modes. An agent cannot predict whether this tool creates new files, truncates existing ones, or requires special setup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is minimal but this is under-specification, not effective conciseness. It has no additional sentences that could have provided necessary context while remaining brief.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a mutating tool with two bare-string parameters, no annotations, and no output schema, this description is grossly incomplete. An agent has almost no basis to call this tool correctly without external knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 mention the path or content parameters at all. There is no clarification of what 'path' means, whether it supports relative paths, or what format content should take.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Write file contents' is essentially a tautology of the tool name 'write_file', restating the name without adding any specificity. It does not distinguish the tool from siblings like read_file or write_matrix_entry beyond the obvious verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 versus alternatives. There is no mention of file creation, overwriting behavior, or context in which write_file is preferred over read_file or write_matrix_entry.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_matrix_entryC
Write entry to Knowledge Matrix
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| content | Yes |
TDQS
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. It merely says 'Write entry', which does not reveal whether the operation creates, updates, overwrites, requires special permissions, or has any side effects beyond the obvious mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is technically brief and free of fluff, but it is under-specified and functions more as a title than an operational description. There is no structural information that helps an agent plan or validate the call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, no annotations, 0% schema description coverage, and no mention of how this tool relates to siblings like query_matrix or write_file, the description leaves nearly everything to inference. This is inadequate even for a simple two-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 mention topic or content at all. The agent receives no explanation of what these parameters mean, how they relate to each other, or what format or constraints the values should satisfy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Write entry') against a specific resource ('Knowledge Matrix'), and the verb distinguishes it from the sibling query_matrix. However, it does not explain what an 'entry' consists of beyond what the schema implies, so it is clear but not fully specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as query_matrix or write_file, no mention of prerequisites, and no explicit exclusions. An agent must infer the intended usage from the tool name and the one-line description.
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. Dates show when Glama detected each change.
13 tool updates
v2.0.0- First observed
add_lead - First observed
browse_page - First observed
get_dashboard - First observed
get_email_content - First observed
get_pipeline - First observed
query_matrix - First observed
read_file - First observed
save_browser_session - First observed
search_gmail - First observed
take_screenshot - First observed
update_lead - First observed
write_file - First observed
write_matrix_entry
TDQS
Each tool targets a distinct resource and action: dashboard metrics vs. pipeline leads, Gmail search vs. email content, knowledge matrix write vs. query, and browser vs. file operations. No two tools appear to perform the same function, and their descriptions make the boundaries clear.
All tool names follow a consistent lower_snake_case verb_noun pattern, such as get_dashboard, add_lead, search_gmail, write_matrix_entry, and read_file. There are no mixed conventions, vague one-word names, or irregular verb styles.
With 13 tools, the count is well within a reasonable range for a multi-purpose assistant spanning CRM, email, knowledge, browser, and file domains. The set is broad but each tool earns its place, though the wide scope keeps it from feeling tightly focused.
Core workflows are covered for each domain, but there are notable gaps: no send/reply for Gmail, no delete/list for files or leads, and limited browser interaction beyond navigation and screenshots. Agents can complete basic tasks but may hit dead ends in fuller lifecycle workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
One workspace of tools for Claude and ChatGPT: connect 600+ apps, generate media, build tools.
Multiple Google accounts (Gmail, Calendar, Drive, Contacts, Tasks) in one Claude connector.
1Personal CRM for Claude. Contacts live as plain-text files in your own Google Drive.
Connect Claude to Fathom meeting recordings, transcripts, and summaries
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceConnects Claude AI to GoHighLevel CRM, enabling comprehensive automation across 269+ tools including contact management, messaging, sales pipeline, appointments, marketing, and e-commerce operations.26-
- FlicenseCqualityDmaintenanceConnects Claude AI to Google Sheets, Gmail, and Calendar for comprehensive revenue tracking and business management. Enables lead pipeline management, email handling, calendar scheduling, task tracking, and file operations through natural language.29-
- AlicenseNot gradedqualityDmaintenanceEnables Claude to manage Gmail, Google Calendar, and Google Drive, including sending emails, scheduling meetings, and organizing files, with integrated workflows.5MIT
- FlicenseCqualityDmaintenanceConnects Claude to ServiceTitan via API, providing 60 tools across CRM, Jobs, Accounting, and more for business management.601-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/PromptishOperations/ziggy-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server