Skip to main content
Glama

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-mcp

2. Install Dependencies

npm run setup
# This installs Node packages AND Playwright browsers

Manual alternative:

npm install
npx playwright install chromium

3. Set Up Google Sheets Backend

  1. Create a new Google Sheet

  2. Go to Extensions > Apps Script

  3. Delete any existing code

  4. Copy all files from /apps-script directory:

    • Code.js - Sheet setup script

    • API.js - Main API handlers

    • calendarSync.js - Calendar integration

    • appsscript.json - Manifest

  5. Click Save (disk icon)

  6. Click Run > setupRevenueEngine

  7. Authorize the script when prompted

  8. Wait 30-60 seconds for completion

  9. 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 mode

Step 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 session

Supported Platforms

  • โœ… Upwork - Job search, proposal submission

  • โœ… LinkedIn - Profile research, connection requests

  • โœ… Any website - Custom scraping and automation

Security Notes

  • Sessions stored locally in sessions/ folder

  • NEVER 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 dashboard

View Pipeline:

What leads are in my pipeline?

Add a Lead:

Add a new lead: Acme Corp, contact John Smith, email john@acme.com

Check Gmail:

Search my unread emails

Log 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 today

Browser Automation

Take Screenshot:

Take a screenshot of competitor-site.com

Extract Data:

Extract pricing from acme.com/pricing

Fill Form:

Fill the contact form at example.com with lead data for John Doe

Research:

Browse to linkedin.com/company/acme and extract company info

Automated Outreach (after session setup):

Search Upwork for "web automation" jobs and show top 5

Project 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 file

Security & 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

  1. Check Claude Desktop config path is correct

  2. Verify Node.js version: node --version (should be โ‰ฅ18.0.0)

  3. Check console: Cmd+Shift+I in Claude Desktop

  4. Verify API_URL is set correctly in index.js

Google Apps Script Issues

  1. Ensure script is deployed as web app

  2. Check execution permissions (should be "Anyone")

  3. Re-authorize if needed: Run > setupRevenueEngine

  4. Check Apps Script logs: View > Logs

Gmail Integration

  1. Ensure Gmail API is enabled in Apps Script

  2. Check OAuth scopes in appsscript.json

  3. Re-authorize if permissions changed

Development

Running Locally

node index.js

Managing 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 Google

Debugging

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

  1. Fork the repository

  2. Create a feature branch: git checkout -b feature/amazing-feature

  3. Commit changes: git commit -m 'Add amazing feature'

  4. Push to branch: git push origin feature/amazing-feature

  5. Open a Pull Request

License

MIT License - see LICENSE file for details

Support

Acknowledgments


Made with โค๏ธ for solopreneurs and small teams

Available Tools

13 tools
add_leadC

Add a new lead to the pipeline

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNo
companyNameYes
contactNameNo
contactEmailNo
estimatedValueNo

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
sessionNo

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionNameYes

TDQS

D1.7/5.0
Behavior1/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters2/5

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.

Purpose2/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
maxResultsNo

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
filenameNo

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNo
leadIdYes
statusNo

TDQS

C2.3/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
contentYes

TDQS

D1.5/5.0
Behavior1/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose2/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYes
contentYes

TDQS

C2.1/5.0
Behavior1/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 13 tool updatesv2.0.0
    • First observedadd_lead
    • First observedbrowse_page
    • First observedget_dashboard
    • First observedget_email_content
    • First observedget_pipeline
    • First observedquery_matrix
    • First observedread_file
    • First observedsave_browser_session
    • First observedsearch_gmail
    • First observedtake_screenshot
    • First observedupdate_lead
    • First observedwrite_file
    • First observedwrite_matrix_entry

TDQS

C2.8/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness3/5

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

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Connects Claude AI to GoHighLevel CRM, enabling comprehensive automation across 269+ tools including contact management, messaging, sales pipeline, appointments, marketing, and e-commerce operations.
    26
    -

Latest Blog Posts

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