MCP server

The video is coming soon

The MCP server exposes WorkZeal data to external AI tools via the Model Context Protocol: the model gets access to the system entities it needs — companies, contacts, deals, tasks, email — and works with them from its own interface.

Connection parameters:

Parameter Value
Address (endpoint) https://mcp.workzeal.com/mcp
Transport Streamable HTTP
Authorization Sign-in via browser (OAuth) or the Authorization: Bearer <token> header

Two ways to authorize

Sign-in via browser (OAuth) is the simplest way: add the server, sign in with your login and password, and you're done. This is how claude.ai, Claude Code, and other clients with OAuth support connect.

Each such connection appears in the token registry (Settings → API) as a separate row "MCP OAuth: application name". Disable the row, and that application's access is revoked immediately.

API token is the universal way for clients without OAuth support. It uses the same token as the public API. How to get it is described in the API quick start section: Settings → API.

Warning

The token gives access to the data in your WorkZeal account. Do not publish it or share it with third parties. If the token is compromised, disable it in the token registry (Settings → API), and all traffic using it will be stopped.

Connecting

No token needed — you connect by signing in to your account:

  1. Open Settings → Connectors → Add custom connector.
  2. Enter the address https://mcp.workzeal.com/mcp.
  3. Click Connect. The WorkZeal sign-in page opens. Sign in with your login and password.

After signing in, the WorkZeal tools appear in the chat. You can revoke access at any time: remove the connector in claude.ai or disable the "MCP OAuth: Claude" row in the registry (Settings → API).

No token needed — on the first request, a browser opens with the WorkZeal sign-in page:

claude mcp add --transport http workzeal https://mcp.workzeal.com/mcp

The tools appear in a new Claude Code session. You can check the connection and complete authorization with the /mcp command inside the session.

By default, the server is added only for the current project. To make it available in all projects, add the --scope user flag.

Token option (if signing in via browser is not suitable, for example on a server):

claude mcp add --transport http workzeal https://mcp.workzeal.com/mcp \
  --header "Authorization: Bearer <token>"

Save the token to an environment variable and add the server to the ~/.codex/config.toml configuration file:

export WORKZEAL_MCP_TOKEN="<token>"
[mcp_servers.workzeal]
url = "https://mcp.workzeal.com/mcp"
bearer_token_env_var = "WORKZEAL_MCP_TOKEN"
enabled = true

Or with a CLI command:

codex mcp add workzeal --url https://mcp.workzeal.com/mcp

Then restart Codex. The server will appear in the codex mcp list output.

Open Settings → MCP → Add new MCP Server or create a .cursor/mcp.json file in the project root (for all projects, ~/.cursor/mcp.json):

{
  "mcpServers": {
    "workzeal": {
      "url": "https://mcp.workzeal.com/mcp",
      "headers": {
        "Authorization": "Bearer <token>"
      }
    }
  }
}

After saving, the server appears in the Settings → MCP list. The toggle should turn green.

In recent versions of Cursor, you can omit headers. In that case, the WorkZeal sign-in page (OAuth) opens when connecting.

Create a .vscode/mcp.json file in the workspace folder:

{
  "servers": {
    "workzeal": {
      "type": "http",
      "url": "https://mcp.workzeal.com/mcp",
      "headers": {
        "Authorization": "Bearer <token>"
      }
    }
  }
}

Then start the server from the MCP panel (the MCP: List Servers command in the command palette).

In recent versions of VS Code, you can omit headers. In that case, the WorkZeal sign-in page (OAuth) opens when the server starts.

Any MCP client that supports the Streamable HTTP transport will work. If the client supports MCP OAuth authorization, just enter the address https://mcp.workzeal.com/mcp, and sign-in will go through the browser. Otherwise, specify in the settings:

  • URL: https://mcp.workzeal.com/mcp
  • Header: Authorization: Bearer <token>

Example of a direct call to check the connection:

curl -X POST https://mcp.workzeal.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer <token>" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'

The response contains information about the server and its instructions, which means the connection works. Subsequent requests (for example, tools/list) are sent with the Mcp-Session-Id header taken from the headers of this response. MCP clients do this automatically.

For platforms that do not yet support Streamable HTTP (for example, Yandex AI Studio agents), specify the legacy HTTP+SSE transport address instead: https://mcp.workzeal.com/mcp/sse, with the same authorization header.

Available tools

Tool What it does
list_records Universal paginated list of records from any module: companies, tasks, documents, finance, sales, deals, products, email, activity log — across all companies at once, with filters by dates, responsible persons, and tags
list_users List of active users (managers)
get_directory Directory values by its ID: company types, deal statuses, categories
list_custom_filters Custom filters of a module
list_additional_fields Custom fields of a module
insert_company Creates a company or an individual, with emails, phones, contact persons, and company details (Tax ID) in one go. It never creates a duplicate: if any email of the company or of its contact persons already belongs to an existing company, it returns that company's ID (code 409)
update_company Partial update of a company card: status, responsible person, note, address
get_company The whole company card: fields, all emails and phones, company details, contact persons
add_company_requisites Adds company details to an existing company: Tax ID and other registration codes, addresses, director, bank
get_my_day The results of a day or a period in one call: companies added, tasks (scheduled, done, overdue), deals, invoices, money in and out, forgotten companies, and the user's KPI. Every value is given for the whole company and for the user personally
get_my_tasks The user's tasks for the day, plus overdue ones
get_my_kpi The user's KPI progress for a period: the overall percent and each plan item with its target, actual value, and percent
get_team_kpi KPI progress of colleagues and departments. Requires permission for the "KPI users" / "KPI departments" reports
find_company_contacts Contacts from the company's own web site: the home page plus its contact, about and requisites pages. Returns the emails published there, each with the page it came from and a confidence level, plus phone numbers and the tax id from the footer. Use it when a card has no email: registry data usually has none or a dead one, while the site's address is live
list_contacts Contact persons with phones and email: by company or by name search
insert_contact Adds a contact person to an existing company
update_contact Partial update of a contact person: position, full name, status, note
add_company_phone Adds a phone number to an existing company or contact person
add_company_email Adds an email to an existing company or contact person
list_tasks Tasks of a single company or deal; all tasks and tasks for a period are available via list_records
insert_task Creates a task: text, assignee, deadlines, reminder
update_task Partial update of a task, including closing it with a result
insert_deal Creates a deal linked to a company
list_deal_goods Line items of a deal
add_deal_goods Adds products from the catalog to a deal
update_deal_good Changes a deal line item: quantity, price, discount
list_document_goods Line items of a document
add_document_goods Adds products from the catalog to a document
list_documents Documents of a single company or deal; for a period and across all companies, use list_records
insert_document Creates a document with an auto-generated number
update_document Partial update of a document: amount, status, number, dates
list_finance Financial transactions of a single company or deal; for a period and across all companies, use list_records
insert_finance Adds an income or expense transaction on an account
update_finance Partial update of a transaction: amount, category, account, note
update_deal Partial update of a deal: changing the stage, amount, responsible person, dates — only the fields passed are changed
list_goods Catalog of products and services: search by name, SKU, section
insert_good Adds a product or service to the catalog
update_good Partial update of a product: price, stock balance, SKU
list_mail_accounts List of the user's email accounts
send_email Sends an email through a configured email account
report_automation_result Writes the outcome of a bulk job to the automation log, only when the user explicitly asks to save the result there

The set of tools is gradually expanding. A detailed description of the public API methods they rely on is in the API section; the get_my_* and get_team_kpi summaries are described on the Key metrics page.

How to use it

Once connected, a regular natural-language request is enough. The model picks the right tool itself:

  • "Find and add 10 new potential clients" — the model will find companies in public sources, ask you for the responsible person and client type, and create cards with phones, email, and contact persons
  • "Show the list of clients added yesterday"
  • "Find the company with Tax ID 7801234567"
  • "Create the company Acme with phone +1 212 555-0123 and email info@acme.com"
  • "How many deals does manager Kate have in progress for August?"
  • "What money came in today?"
  • "Move the Acme deal to the Negotiation stage and set the amount to $250,000"
  • "Assign Michael a task to call Acme tomorrow at 3:00 PM with a reminder half an hour before"
  • "Record an income of $150,000 from Globex to the checking account under the Sales category"
  • "How is my day going?" or "How many deals did we create this week?"
  • "What are my tasks today? Do I have any overdue ones?"
  • "How was my KPI last month?"
  • "Which of my colleagues is doing best on their KPI?"

Frequently asked questions

How to revoke an AI tool's access

All connections, both by token and via browser sign-in, are visible in the token registry (Settings → API). Browser sign-in connections are labeled "MCP OAuth: application name". Disable the row, and access will be stopped: active requests will stop going through, and the application will not be able to renew access.

I connected the server, but the tools did not appear

MCP clients load the list of tools when a session starts. Start a new session (a new chat), and the tools will be picked up automatically.

The client sees an old set of tools

The list of tools is cached for the duration of the connection. If the server has been updated but the new tools are not visible, reconnect the integration or start a new session.

Calls return an authorization error

When signing in via browser: check that the connection is not disabled in the registry (Settings → API, the "MCP OAuth: …" row). If you disabled and re-enabled it, or access has expired, reconnect the integration by signing in to your account again.

When connecting by token: check that the token is active in the registry (Settings → API) and that the header is passed exactly as Authorization: Bearer <token>, with the word Bearer and a space before the token.

Can I give an AI tool limited access?

Access inherits the user's rights: for a token, the rights of the user who created it; for browser sign-in, the rights of the user who signed in. To limit what the model can do, connect as a user with a suitable role and access rights.

Previous
Next