honeybook-mcp
This server connects Claude to your HoneyBook client portal, giving you natural-language access to contracts, invoices, and vendor information through your existing browser session.
Session Management:
Capture a portal session (
use_magic_link) — Authenticate from a vendor's magic-link URL via the fetchproxy browser extensionList active sessions (
list_active_sessions) — View all currently active HoneyBook portal sessions
Reading Vendor Files & Data:
List workspace files (
list_workspace_files) — Retrieve all files a vendor has shared with you (contracts, invoices, brochures, proposals), with optional filtering by file typeGet workspace file detail (
get_workspace_file) — Fetch detailed info for a specific file, including metadata, pricing, contract text, signatures, and payment schedulesGet workspace info (
get_workspace) — Retrieve full vendor project/workspace details, including status flags for signed files or paid paymentsList payment methods (
list_payment_methods) — View saved payment methods on file with a vendor
Taking Action (requires confirmation):
Sign a contract (
sign_contract) — Generate a deep link to sign a vendor contract in the HoneyBook portal (requires explicitconfirm: true)Pay an invoice (
pay_invoice) — Generate a deep link to pay a vendor invoice in the HoneyBook portal (requires explicitconfirm: true)
Multiple vendor sessions can be managed simultaneously using the per-tool origin parameter.
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., "@honeybook-mcpShow me my unsigned contracts"
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.
HoneyBook MCP
A Model Context Protocol server that connects Claude to the HoneyBook client portal, giving you natural-language access to contracts and invoices sent by your wedding vendors.
AI-developed project. This codebase was built and is actively maintained by Claude Code. No human has audited the implementation. Review all code and tool permissions before use.
What you can do
Ask Claude things like:
"Paste your magic link — I'll connect to your HoneyBook portal."
"Show me every unsigned contract."
"What invoices do I have due in the next month?"
"Summarize the contract from Silk Veil Events."
"Give me a deep link to sign the photographer's contract."
Related MCP server: WealthGuard MCP
Requirements
Node.js 20.6 or later
Magic-link emails from the wedding vendors that use HoneyBook
fetchproxy 0.3.0 browser extension — installed in Chrome (Web Store) or Safari (.dmg). Used by
use_magic_linkto snapshot the session out of your signed-in vendor portal tab.
Acknowledgement of Terms
By using this MCP server, you acknowledge and agree to the following:
1. This server accesses your own HoneyBook workspace. Every request is dispatched through your own signed-in browser session via the fetchproxy extension. It does not — and cannot — access anyone else's workspace.
2. HoneyBook's Terms of Service govern your use of this server, just as they govern your direct use of honeybook.com. The clauses most relevant here:
In connection with your use of the Service you will not engage in or use any data mining, robots, scraping or similar data gathering or extraction methods.
And: users may not "modify, copy, frame, scrape, rent, lease, loan, sell, distribute or create derivative works based on the Service or the Service Content."
You are agreeing to those terms — read by the maintainer 2026-05-23 — every time you invoke a tool in this server. HoneyBook's ToS broadly prohibits data mining and scraping; this MCP is an unofficial automation tool and HoneyBook has not granted it an exception.
3. Personal, single-business use only. This project is not affiliated with, endorsed by, sponsored by, or in partnership with HoneyBook, Inc. It is a personal automation tool that an individual HoneyBook account holder can use to drive their own workspace. Do not use it on behalf of another business, do not bulk-extract HoneyBook's directory or template content, and do not create a derivative SaaS product on top of it.
4. Stability is not guaranteed. This server calls internal HoneyBook endpoints that HoneyBook may change without notice. It may break.
5. You accept full responsibility for any consequences of using this server in connection with your HoneyBook account — rate limiting, account warnings, suspension, or any enforcement action HoneyBook takes. HoneyBook can detect automated traffic and may block your IP or workspace. If HoneyBook objects to your use, stop using this server.
This section is the maintainer's good-faith summary of the terms — it is not legal advice and does not modify or supersede HoneyBook's actual ToS.
Installation
From source
git clone https://github.com/chrischall/honeybook-mcp.git
cd honeybook-mcp
npm install
npm run buildAdd to Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"honeybook": {
"command": "node",
"args": ["/absolute/path/to/honeybook-mcp/dist/bundle.js"]
}
}
}No environment variables are required.
Sessions
HoneyBook has no public client-portal API. This MCP reuses the same auth state your browser has after clicking a vendor's magic link, via the fetchproxy 0.3.0 browser extension.
One-time setup:
Install the fetchproxy 0.3.0 extension in Chrome (Web Store) or Safari (.dmg).
Click each vendor's magic link in your normal browser. That signs you into their
*.hbportal.coportal.
Per-vendor activation:
Make sure the vendor's portal tab is open (the magic link from their email).
In Claude, call
use_magic_linkwith the magic-link URL — the tool asks the fetchproxy extension to snapshot the auth fields out of the page'slocalStorage["HONEYBOOK_REACT_CURR_USER"], then closes the bridge. The tab only has to be open and signed in; nothing is read off a live request. No headless browser is spawned.All other tools use the most-recently-activated session by default. Pass
originexplicitly when multiple vendors are active.
Sessions are stored in memory and persisted to ~/.honeybook-mcp/sessions.json (mode 0600) so they survive MCP restarts. Re-run use_magic_link when a session expires.
Questionnaire ("flow") links
A vendor can send a second, different shape of link:
https://<vendor>.hbportal.co/flow/<flowId>?hash=…&userId=…That one does not sign you into the portal. It opens a single questionnaire and stores a per-flow credential — HoneyBook calls it weak auth — under localStorage["HONEYBOOK_REACT_WEAK_AUTH_<flowId>"]. Capture it with use_flow_link and read it with get_flow.
The two credential kinds are kept apart on purpose, in two files and two stores:
portal session | flow credential | |
capture tool |
|
|
link shape |
|
|
stored in |
|
|
can read | workspaces, files, invoices, payment methods | that one questionnaire |
Each tool refuses the other's link shape by name, and a portal tool asked to run with only a flow credential says so rather than failing later with an opaque HoneyBook error. list_active_sessions reports both kinds, separately.
get_flow makes the same two calls the questionnaire page does: the public GET /api/v2/flow/<flowId>/minimal for the vendor company id, then GET /api/v2/client/flow/<flowId>/active?ctxc=<companyId>. If the first does not carry a company id it stops there and says so — calling /active without ctxc answers a bare 400 that reads like an expired credential.
One thing to expect: the storage key contains the flow id, so every new questionnaire is a new key in the declared fetchproxy scope. The extension gates on the scope you approved at pair time, so it asks you to re-approve once per questionnaire. That is the extension working, not a fault.
Available tools
Tools that touch a vendor accept an optional origin argument (e.g. https://acme.hbportal.co). When only one session is active it is inferred.
Tool | What it does | Permission |
| Capture a session from a magic-link URL | Confirm |
| Show active credentials, split by kind | Auto |
| Capture a questionnaire (flow) credential | Confirm |
| Read one questionnaire and its answers | Auto |
| Files from one vendor; filter by type | Auto |
| Full detail for one file | Auto |
| Workspace detail + status flags | Auto |
| Saved payment methods | Auto |
| Deep link to sign in portal (requires | Confirm |
| Deep link to pay in portal (requires | Confirm |
Troubleshooting
"HoneyBook auth expired" — re-open the vendor's magic link in Chrome and re-run
use_magic_link."No active HoneyBook session" — call
use_magic_linkfirst."No active HoneyBook portal session. N flow (questionnaire) credentials are active" — you captured a
/flow/link but the tool you called needs a client-portal one. Runuse_magic_linkwith an/app/link/resolve/…link, or useget_flowto read the questionnaire."that is a questionnaire (flow) link, not a client-portal link" — use
use_flow_linkfor it."no auth hash for flow …" — the link you passed had lost its
?hash=parameter (the page rewrites the URL after it loads). Re-copy the original link out of the vendor email."HoneyBook error 400 … NOT an auth failure" on
get_flow— a required input was missing, not your credential. Usually a pinnedHONEYBOOK_API_VERSIONthat has gone stale: unset it so the live value is read from/api/gon. Re-runninguse_flow_linkwill not help."no context id for flow …" — HoneyBook's public
/minimalroute did not return the vendor company id the questionnaire read needs. Also not a credential problem."fetchproxy capture failed" — install the fetchproxy 0.3.0 extension, then open the vendor's magic link in that browser.
"fetchproxy capture timed out" — the extension found no signed-in portal tab to read. Open the vendor's magic link, confirm the portal page has loaded, then retry.
"no confirmed browser session" — the extension is connected but has not approved this MCP. Open the Transporter popup and approve the pair code it shows, then retry.
"localStorage keys not in declared set" — the MCP now reads a storage key your existing pairing doesn't cover. See Upgrading from 0.4.4 or earlier. Retrying will not help, and this is not a version problem.
Upgrading from 0.4.4 or earlier
0.4.5 requires a one-time re-approval in the browser extension. HoneyBook moved the client-portal session out of localStorage["jStorage"] into localStorage["HONEYBOOK_REACT_CURR_USER"], so 0.4.5 reads a different storage key. The extension approves a MCP's declared scope at pair time, so an existing pairing does not cover the new key and every capture is refused with:
localStorage keys not in declared set: HONEYBOOK_REACT_CURR_USERTo fix it, once:
Open the Transporter extension popup.
Revoke
honeybook-mcp.Re-run
use_magic_link— a fresh pair code appears.Approve it in the popup. You are approving the new scope.
Nothing else changes: existing sessions in ~/.honeybook-mcp/sessions.json keep working, and a re-capture is only needed if the session itself has expired.
Security
Sessions are captured locally — auth tokens never leave your machine
~/.honeybook-mcp/sessions.jsonis written with mode 0600; directory with mode 0700Write tools (
sign_contract,pay_invoice) requireconfirm:trueand return portal deep links rather than signing/paying headlessly
Development
npm test # run tests
npm run build # tsc + esbuild bundleLicense
MIT
Available Tools
8 toolsget_workspaceARead-only
Get full detail for a workspace (vendor project). Includes status flags like has_sent_files, has_signed_files, has_paid_payments.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | Portal origin (e.g. https://<vendor>.hbportal.co). Optional when only one session is active. | |
| workspace_id | Yes | The workspace _id (found on any workspace_file under .workspace._id). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, aligning with the description's 'Get' action. The description adds value by specifying that the response includes status flags, providing behavioral context beyond the annotation's safety profile. No contradictions.
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 very concise, consisting of two sentences that convey the purpose and added value (status flags). Every word earns its place with no unnecessary 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?
Given the absence of an output schema, the description partially covers return values by listing some status flags, but does not provide a complete picture of all fields returned. Lacks guidance on when to use relative to siblings, which are diverse.
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 100%, so the baseline is 3. The description does not add extra meaning to the parameters beyond what the schema provides (workspace_id and origin are clear). The mention of status flags relates to output, not 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 clearly states the verb 'Get' and the resource 'workspace (vendor project)', and specifies that it returns full detail including status flags like has_sent_files, has_signed_files, has_paid_payments. This differentiates it from siblings such as get_workspace_file or list_workspace_files.
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 explicit guidance on when to use this tool versus alternatives like list_workspace_files or pay_invoice. The context suggests it's for retrieving a single workspace's details, but no when-to-use or when-not-to-use instructions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workspace_fileARead-only
Get detail for one workspace file. Returns a compact summary by default (metadata, vendor, event, pricing totals, payment schedule, agreement presence). Use section to drill into a specific part of the file: "pricing" for full line items + tax/svc detail, "agreement" for contract HTML + signatures, "payments" for full payment-schedule detail, "all" for the pruned full response, or "raw" for the entirely-unpruned response (may exceed MCP size limits on proposal-class files).
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | Portal origin (e.g. https://<vendor>.hbportal.co). Optional when only one session is active. | |
| file_id | Yes | The file _id from list_workspace_files. | |
| section | No | Which view to return. Default "summary" (~5-15 kB). Others return focused sections of the raw response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that raw may exceed MCP size limits, provides size estimates for summary, and details what each section returns. This adds value beyond the readOnlyHint annotation.
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?
Two sentences with no wasted words. Front-loaded with purpose and defaults, then describes optional drill-down. Perfectly concise.
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 3 parameters, no output schema, and enums, the description is very complete: default behavior, section options, size warning, and source of file_id. Nothing essential is missing.
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 coverage is 100%, and the description adds significant meaning: file_id origin, and section values explained with examples ('pricing' for full line items, etc.). This helps the agent choose correctly.
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 'Get detail for one workspace file' and explains the default vs. drill-down behavior. It distinguishes from siblings like list_workspace_files (which lists files) and other workspace-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?
The description explicitly tells when to use each section parameter value, but does not explicitly state when not to use this tool (e.g., if just listing is needed). However, the context is clear enough for an agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_active_sessionsARead-only
List the HoneyBook portal sessions currently active in this MCP (captured via use_magic_link). No API call.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, and the description adds that no API call is made, which is useful. No further behavioral traits (e.g., rate limits, scope) are disclosed.
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?
Two concise sentences, front-loaded with essential purpose and context. Every word adds value.
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, the description omits what information is returned for each session (e.g., ID, timestamps). Incomplete for an agent to understand the tool's output.
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?
No parameters exist, schema coverage is 100%, and the description correctly provides no parameter details. Baseline 4 for 0 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 clearly states the tool lists active HoneyBook portal sessions, specifies the source (captured via use_magic_link), and distinguishes from siblings like get_workspace or pay_invoice.
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 implies usage context (sessions from use_magic_link) but does not explicitly state when to use this tool versus alternatives or exclude scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_payment_methodsARead-only
List saved payment methods for your client account with a vendor. Empty array if none are saved.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | Portal origin (e.g. https://<vendor>.hbportal.co). Optional when only one session is active. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the readOnlyHint annotation by stating that an empty array is returned if no payment methods are saved. This provides expected behavior. No other behavioral traits (e.g., rate limits, auth) are mentioned, but the annotation already covers read-only nature.
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, well-structured sentence that immediately communicates the tool's purpose. There is no extraneous information, and every word adds value.
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 read-only list tool with a single optional parameter and no output schema, the description is fully adequate. It explains the return case (empty array) and the parameter is well documented in the schema. No gaps remain.
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 has 100% description coverage for the single parameter 'origin', including its meaning and optionality. The tool description does not add any additional clarification about parameters beyond what the schema provides, so baseline score of 3 is appropriate.
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 'List', the resource 'payment methods', and the scope 'for your client account with a vendor'. It distinguishes itself from sibling tools which deal with workspaces, invoices, contracts, etc., and none overlap with payment methods.
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 implies the tool is for retrieving saved payment methods but does not provide explicit guidance on when to use it over alternatives, nor does it mention prerequisites or exclusions. However, the context makes it fairly clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workspace_filesARead-only
List all files a vendor has shared with you (contracts, invoices, brochures, proposals). Optionally filter by file_type.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | Portal origin (e.g. https://<vendor>.hbportal.co) to target. Optional — defaults to the most recently activated session. | |
| file_type | No | Filter to one file type. Omit to return all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description is consistent. It adds context about file types but does not disclose potential behavioral traits like pagination, limits, or session requirements beyond the origin parameter.
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 sentence that is efficient and front-loaded with the key action and resource. It is concise without missing essential information.
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?
The description covers the basic purpose and filtering option, but without an output schema, it does not explain the return format or structure. For a simple list tool, it is adequate but not fully complete.
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 100%, with clear parameter descriptions. The tool description adds examples of file types but no additional meaning beyond the schema. Baseline of 3 is appropriate.
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 (list) and resource (files shared by vendor) with examples (contracts, invoices, etc.), and it is well-distinguished from sibling tools like get_workspace_file and list_active_sessions.
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 explicit guidance on when to use this tool versus alternatives. The description implies its use for listing shared files with optional filtering, but lacks direct comparisons or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pay_invoiceADestructive
Pay an invoice from a vendor. In v1 this returns a deep link to the HoneyBook portal instead of paying headlessly. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | Portal origin (e.g. https://<vendor>.hbportal.co). Optional when only one session is active. | |
| confirm | No | Must be true to proceed. Without this, tool returns a preview. | |
| file_id | Yes | The invoice file _id from list_workspace_files (file_type=invoice). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive hint (mutation). The description adds that the tool returns a deep link and requires confirmation, informing the agent of the behavioral outcome beyond the annotation.
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?
Two sentences, no wasted words. Front-loaded with purpose and immediately provides key behavioral details. Perfectly concise.
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 tool with 3 params and no output schema, the description covers purpose, behavioral caveat, and a parameter requirement. It could mention what the deep link entails but is sufficiently complete.
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 has 100% coverage, so baseline is 3. The description adds crucial constraint on the confirm parameter ('Requires confirm:true'), adding value beyond the schema's description.
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 tool pays an invoice from a vendor, which is a specific verb+resource. It distinguishes from siblings like get_workspace or sign_contract by focusing on payment.
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?
It mentions the requirement 'confirm:true' and notes that v1 returns a deep link instead of headless payment, providing context for usage. However, it lacks explicit when-not or alternative tool comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sign_contractADestructive
Sign a contract you received from a vendor. In v1 this returns a deep link to the HoneyBook portal instead of signing headlessly. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | Portal origin (e.g. https://<vendor>.hbportal.co). Optional when only one session is active. | |
| confirm | No | Must be true to proceed. Without this, tool returns a preview. | |
| file_id | Yes | The agreement file _id from list_workspace_files (file_type=agreement). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that v1 returns a deep link instead of signing headlessly, which adds behavioral context beyond the annotations. The 'destructiveHint: true' annotation is consistent with signing a contract, and the description provides specific version behavior.
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?
Two sentences with no wasted words. The primary action is stated first, followed by a critical behavioral note and a requirement. Perfectly front-loaded.
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 output schema, the description mentions the tool returns a deep link, which is sufficient for basic understanding. It covers the essential behavioral trait (headless vs. deep link) and the confirm requirement. Missing details on error handling or return format but acceptable for a simple 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 coverage is 100%, providing baseline 3. The description adds value by emphasizing the 'confirm' parameter requirement and the optional nature of 'origin', which goes beyond the 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 clearly states the tool signs a contract received from a vendor, which is a specific verb+resource. It distinguishes from sibling tools like 'pay_invoice' and 'list_workspace_files' by focusing on signing contracts.
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 explicitly requires 'confirm:true' and notes that the 'origin' parameter is optional when only one session is active. It provides clear context for usage, though it does not explicitly state when not to use or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
use_magic_linkA
Capture a HoneyBook client-portal session via the fetchproxy 0.3.0 browser extension. Prerequisites: install the fetchproxy extension in Chrome/Safari, then open the vendor's magic-link URL in that browser so you're signed into their portal and leave that tab open. This tool then snapshots the auth fields out of the page's localStorage["HONEYBOOK_REACT_CURR_USER"] into ~/.honeybook-mcp/sessions.json. The tab only needs to be open and signed in — nothing is sniffed off a live request, so it does not matter whether the page is idle. All other tools use the most-recently-activated session by default. The magic_link_url arg is used only to derive the portalOrigin (cache key) — the tool does NOT open or navigate to it.
| Name | Required | Description | Default |
|---|---|---|---|
| magic_link_url | Yes | Full magic-link URL from the vendor's HoneyBook email, e.g. https://<vendor>.hbportal.co/app/workspace_file/<id>/... Used only to derive the portal origin; you must already have this URL open in a Chrome tab with the fetchproxy extension installed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnlyHint annotation by disclosing that it reads localStorage, writes to ~/.honeybook-mcp/sessions.json, does not sniff live requests, does not navigate to the magic link, and works regardless of page idle state. This is fully consistent with readOnlyHint=false, so no contradiction.
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 front-loaded with the primary purpose, followed by prerequisites, mechanism, output location, inter-tool dependency, and a parameter caveat. Every sentence earns its place; no wasted words.
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 tool's complexity as a setup/authentication capture, the description covers prerequisites, the exact mechanism, the file output, how other tools depend on it, and parameter semantics. There is no output schema, but the description sufficiently explains what the tool does and what it produces.
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 already provides a detailed description of magic_link_url with 100% coverage. The tool description adds behavioral nuance by explicitly stating the argument is used only to derive the portal origin/cache key and that the tool does NOT open or navigate to the URL, which is valuable beyond 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 opens with a specific verb and resource: 'Capture a HoneyBook client-portal session via the fetchproxy 0.3.0 browser extension.' It clearly distinguishes this tool from sibling tools, which consume sessions, by explaining that it is the setup mechanism that writes session data for other tools to use.
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 explicit prerequisites (install extension, open signed-in tab, leave it open) and explains how all other tools use the most-recently-activated session by default. It does not explicitly name alternative tools or state when not to use this tool, but the context is strong enough to guide the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource and action: session capture vs. session listing, file listing vs. file detail, workspace detail vs. file detail, contract signing vs. invoice payment. There is no overlapping purpose or ambiguity.
All tool names follow a consistent verb_noun snake_case pattern (use_magic_link, list_active_sessions, list_workspace_files, get_workspace_file, get_workspace, list_payment_methods, sign_contract, pay_invoice). The verbs are clear and predictable.
8 tools is well-scoped for a HoneyBook client portal: session management, file/workspace access, payment methods, and contract/invoice actions. Each tool earns its place without being overwhelming.
Covers the core client workflows: session capture, file viewing, workspace detail, payment methods, contract signing, and invoice payment. Minor gaps include lack of a list_workspaces endpoint to enumerate all workspaces, and sign_contract/pay_invoice merely return deep links rather than executing actions in v1.
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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Hosted MCP server for Cliniko — patients, appointments, availability, and invoices for AI agents.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables seamless integration between Claude AI and development tools like VSCode, Augment, Vercel, Airtable, and Square.7MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that connects Claude to your Google Sheets for personal finance tracking, analysis, and reporting — all through natural language.2
- AlicenseAqualityDmaintenanceA Model Context Protocol server that gives Claude (or any MCP-compatible LLM) direct access to a self-hosted WordPress site over its REST API.73MIT
- AlicenseAqualityAmaintenanceA Model Context Protocol server that connects Claude to OurFamilyWizard, giving you natural-language access to your co-parenting messages, calendar, expenses, and journal.114221MIT
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/chrischall/honeybook-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server