Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.Mad-Man-Dan/karbon-mcp-server

NPM · KARBON-MCP-SERVER

Unofficial MCP server for Karbon practice management: contacts, work, time, invoices, payments.

Available components

0 this week 87 Trust /100

Last scanned (1 hour ago)

Scores higher than 91% of npm servers

Category Project Management

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security81
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known high-severity CVE affects zod 3.25.76, a direct dependency. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • 30 of 93 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to Mad-Man-Dan/karbon-mcp-server). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 111 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability76
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 5478 tokens (~109/item across 50 items; 50 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage88
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 64% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "remove_team_member" implies "remove" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 50 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Nov 26 0
    • Stability: 0.97 → pass security
  • 2 Nov 26 0
    • Stability: pass → 0.97 functional
  • 27 Oct 26 0
    • Stability: 0.97 → pass security
  • 26 Oct 26 0
    • Stability: pass → 0.97 functional
  • 24 Oct 26 −5
    • CVE-2023-54404 affects this package: high ▼ security
    • Known CVEs: pass → fail ▼ security
  • 20 Oct 26 0
    • Stability: 0.97 → pass security
  • 19 Oct 26 0
    • Stability: pass → 0.97 functional
  • 17 Oct 26 +2
    • Stability: 0.87 → pass security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed npm/karbon-mcp-server@0.2.4

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo Mad-Man-Dan/karbon-mcp-server
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/Mad-Man-Dan/karbon-mcp-server/.github/workflows/publish-mcp.yml@refs/tags/v0.2.4
Rekor log index 2180051394
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:81131ee7bd1f904f329d57ccb2cd0837f8ab8c8d46d6e103ead3f507b51e589184f3db5d429c15994a656f95e1ea485f31ffad3ac654a51cc0f870cd5

Background: How many MCP packages publish verified provenance →

Vulnerabilities 1 finding
ID CVE Severity Vector Fix available
GHSA-mrhx-c7xc-m3w5 CVE-2023-54404 high CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 93 packages
Packages resolved 93
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 50 exposed · ~5,478 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
add_team_members ~81

Add one or more users to a team by their UserKeys (find them with list_users). Users already on the team are skipped. Team membership can affect work visibility and assignment — confirm with the user before changing it.

NameTypeReqDescription
UserKeysarrayyesUserKeys of the users to add
teamKeystringyesThe Karbon TeamKey

No output schema declared.

No examples provided.

create_client_group ~158

Create a new client group in Karbon. Members are existing contacts and/or organizations.

NameTypeReqDescription
ClientManagerstring––
ClientOwnerstring–Email address of the Karbon user who owns this client relationship
ContactTypestring–Contact type label, e.g. 'Client'. Valid values come from get_tenant_settings.
EntityDescriptionobject–Free-form description of the client group
FullNamestringyesThe full name of the client group
Membersarray––
PrimaryContactstring–ContactKey of the group's main contact
RestrictionLevelstring––
UserDefinedIdentifierstring–Your own external ID for this client group

No output schema declared.

No examples provided.

create_contact ~147

Create a new person contact in Karbon.

NameTypeReqDescription
BusinessCardsarray––
ClientManagerstring––
ClientOwnerstring–Email address of the Karbon user who owns this client
ContactTypestring–Contact type label, e.g. 'Client', 'Prospect'. Valid values come from get_tenant_settings.
FirstNamestringyes–
LastNamestringyes–
MiddleNamestring––
PreferredNamestring––
RestrictionLevelstring––
Salutationstring––
UserDefinedIdentifierstring–Your own external ID for this contact

No output schema declared.

No examples provided.

create_custom_field ~108

Create a new custom field definition for the whole Karbon tenant. This changes the firm's shared configuration, not just one record — state the field name, type, and visibility to the user and get their explicit confirmation before calling.

NameTypeReqDescription
IsVisibleToContactsboolean––
IsVisibleToOrganizationsboolean––
ListOptionsarray–Options for list-type fields
NamestringyesThe field name shown in Karbon
Typestringyes–

No output schema declared.

No examples provided.

create_note ~146

Create a note in Karbon, optionally linked to work items, contacts, organizations, or client groups via timelines. Notes linked to a work item also appear on the client's timeline.

NameTypeReqDescription
AssigneeEmailAddressstring–Assign the note as a to-do for this Karbon user
AuthorEmailAddressstringyesEmail address of the Karbon user authoring the note
BodystringyesNote body (supports basic HTML)
DueDatestring–ISO 8601 date
Subjectstringyes–
Timelinesarray–Entities to link this note to
TodoDatestring–ISO 8601 date

No output schema declared.

No examples provided.

create_organization ~111

Create a new organization contact in Karbon.

NameTypeReqDescription
ClientManagerstring––
ClientOwnerstring–Email address of the Karbon user who owns this client
ContactTypestring–Contact type label, e.g. 'Client', 'Prospect'. Valid values come from get_tenant_settings.
FullNamestringyesThe organization's name
RestrictionLevelstring––
UserDefinedIdentifierstring–Your own external ID for this organization

No output schema declared.

No examples provided.

create_work_item ~229

Create a new work item in Karbon. WorkType and status values are tenant-specific — call get_tenant_settings first if unsure.

NameTypeReqDescription
AssigneeEmailAddressstringyesEmail address of the Karbon user assigned to this work
ClientKeystringyesKey of the client this work is for (ContactKey, OrganizationKey, or ClientGroupKey)
ClientTypestringyes–
DeadlineDatestring––
Descriptionstring––
DueDatestring–ISO 8601 date or date-time
EstimatedBudgetnumber––
PrimaryStatusstring––
SecondaryStatusstring–Tenant-specific status label from get_tenant_settings
StartDatestringyesISO 8601 date or date-time, e.g. 2026-08-01
Titlestringyes–
WorkTemplateKeystring–Create from a work template (see list_work_templates)
WorkTypestring–Tenant-specific work type label, e.g. 'Tax Return'

No output schema declared.

No examples provided.

create_work_schedule ~365

Create a recurring work schedule from an existing work item. The schedule will automatically generate new work items on the recurrence you set — confirm the recurrence details with the user before calling. Note: RecurrenceFrequency cannot be changed after creation.

NameTypeReqDescription
AssigneeUserKeystring–UserKey to assign generated work items to
CreatedFromWorkItemKeystringyesThe WorkItemKey the schedule is created from
CustomFrequencyMultipleintegeryesMultiple of the frequency unit; use 1 unless RecurrenceFrequency is Custom
CustomFrequencyUnitsstring–Only when RecurrenceFrequency is Custom
InitializeBeforeStartDateMultipleinteger––
InitializeBeforeStartDateUnitsstring–Create the work item this long before its start date
InitializeTasksBeforeStartDateMultipleintegeryes–
InitializeTasksBeforeStartDateUnitsstringyesCreate the work item's tasks/budget this long before its start date
PreventStartEndOnWeekendbooleanyesIf true, generated work items never start on a weekend
RecurrenceFrequencystringyes–
ScheduleDueDateDaysinteger–The day count for the due date method (not used with LastDayOfMonth/NoDueDate)
ScheduleDueDateMethodstringyes–
ScheduleDueDateMonthMultipleinteger–Only with DayOfSubsequentMonth: how many months later
ScheduleEndDatestring–ISO 8601 date the schedule stops; omit to run forever
ScheduleStartDatestringyesISO 8601 date the schedule starts
WorkItemTitleDefinitionstringyesTitle format for generated work items; supports Karbon title tokens (e.g. period/date placeholders)

No output schema declared.

No examples provided.

delete_custom_field ~101

DESTRUCTIVE AND IRREVERSIBLE: deleting a custom field definition permanently removes the field AND every value stored in it across all contacts, organizations, and client groups in the tenant. Never call this without first telling the user exactly which field will be deleted (by name, via list_custom_fields) and receiving their explicit confirmation for that specific field.

NameTypeReqDescription
customFieldDefinitionKeystringyesThe CustomFieldDefinitionKey to delete (from list_custom_fields)

No output schema declared.

No examples provided.

download_file ~117

Download a Karbon file to a local path on the machine running this MCP server. Get the DownloadUrl from list_entity_files first — download links expire after 15 minutes, so re-list if the download fails with an auth error. Ask the user where to save before writing outside a temp directory, and never overwrite a file the user didn't ask you to replace.

NameTypeReqDescription
downloadUrlstringyesThe DownloadUrl returned by list_entity_files
savePathstringyesAbsolute local file path to save to, including the file name

No output schema declared.

No examples provided.

get_business_card ~78

Get a single business card by BusinessCardKey. Business cards hold the contact details (email, phone, address, websites) of a contact, organization, or client group. Find the key by expanding BusinessCards on get_contact / get_organization / get_client_group.

NameTypeReqDescription
businessCardKeystringyesThe Karbon BusinessCardKey

No output schema declared.

No examples provided.

get_client_group ~116

Get a single client group by ClientGroupKey — or by your own UserDefinedIdentifier — optionally expanding related data (BusinessCard, ClientTeam). Includes the group's members (contacts and organizations). Provide exactly one of clientGroupKey or userDefinedIdentifier.

NameTypeReqDescription
clientGroupKeystring–The Karbon ClientGroupKey
expandstring–Comma-separated related data to include: BusinessCard, ClientTeam
userDefinedIdentifierstring–Look up by your own external ID instead of the ClientGroupKey

No output schema declared.

No examples provided.

get_comment ~41

Get a single comment by its CommentKey. Comments appear on work item and client timelines alongside notes.

NameTypeReqDescription
commentKeystringyesThe Karbon CommentKey

No output schema declared.

No examples provided.

get_contact ~107

Get a single person contact by ContactKey — or by your own UserDefinedIdentifier — optionally expanding related data (BusinessCards, AccountingDetail, ClientTeam). Provide exactly one of contactKey or userDefinedIdentifier.

NameTypeReqDescription
contactKeystring–The Karbon ContactKey
expandstring–Comma-separated related data to include: BusinessCards, AccountingDetail, ClientTeam
userDefinedIdentifierstring–Look up by your own external ID instead of the ContactKey

No output schema declared.

No examples provided.

get_custom_field_values ~53

Get the custom field values set on a specific entity (contact, organization, or client group) by its entity key.

NameTypeReqDescription
entityKeystringyesThe ContactKey, OrganizationKey, or ClientGroupKey

No output schema declared.

No examples provided.

get_estimate_summary ~67

Get the estimate summary for a work item (read-only): budgeted vs. actual time and value. Useful for 'are we over budget on this job' questions — pair with list_time_entries for detail.

NameTypeReqDescription
workItemKeystringyesThe Karbon WorkItemKey

No output schema declared.

No examples provided.

get_invoice ~65

Get a single invoice by InvoiceKey (read-only), optionally expanding related data (LineItems, Payments, Data).

NameTypeReqDescription
expandstring–Comma-separated related data to include: LineItems, Payments, Data
invoiceKeystringyesThe Karbon InvoiceKey

No output schema declared.

No examples provided.

get_note ~30

Get a single note by its NoteID.

NameTypeReqDescription
noteIdstringyesThe Karbon NoteID

No output schema declared.

No examples provided.

get_organization ~111

Get a single organization by OrganizationKey — or by your own UserDefinedIdentifier — optionally expanding related data (BusinessCards, AccountingDetail, ClientTeam, Contacts). Provide exactly one of organizationKey or userDefinedIdentifier.

NameTypeReqDescription
expandstring–Comma-separated related data to include: BusinessCards, AccountingDetail, ClientTeam, Contacts
organizationKeystring–The Karbon OrganizationKey
userDefinedIdentifierstring–Look up by your own external ID instead of the OrganizationKey

No output schema declared.

No examples provided.

get_payment ~32

Get a single payment by PaymentKey (read-only).

NameTypeReqDescription
paymentKeystringyesThe Karbon PaymentKey

No output schema declared.

No examples provided.

get_team ~39

Get a single team by TeamKey, including its members (users and sub-teams).

NameTypeReqDescription
teamKeystringyesThe Karbon TeamKey

No output schema declared.

No examples provided.

get_tenant_settings ~47

Get this Karbon account's configuration: valid work statuses (secondary statuses), work types, and contact types. Call this before creating or updating work items or contacts with tenant-specific values.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_time_entry ~41

Get a single individual time entry by its IndividualTimeEntryKey (read-only).

NameTypeReqDescription
timeEntryKeystringyesThe Karbon IndividualTimeEntryKey

No output schema declared.

No examples provided.

get_timesheet ~52

Get a single timesheet by TimesheetKey, optionally expanding TimeEntries.

NameTypeReqDescription
expandTimeEntriesboolean–Include individual time entries
timesheetKeystringyesThe Karbon TimesheetKey

No output schema declared.

No examples provided.

get_user ~32

Get a single Karbon user by their UserId.

NameTypeReqDescription
userIdstringyesThe Karbon UserId

No output schema declared.

No examples provided.

get_work_item ~34

Get a single work item by WorkItemKey.

NameTypeReqDescription
workItemKeystringyesThe Karbon WorkItemKey

No output schema declared.

No examples provided.

get_work_schedule ~43

Get a recurring work schedule by WorkScheduleKey — the recurrence rules that automatically generate work items.

NameTypeReqDescription
workScheduleKeystringyesThe Karbon WorkScheduleKey

No output schema declared.

No examples provided.

get_work_template ~41

Get a single work template by WorkTemplateKey, including its task and section structure.

NameTypeReqDescription
workTemplateKeystringyesThe Karbon WorkTemplateKey

No output schema declared.

No examples provided.

list_client_groups ~157

List or search client groups in Karbon. Supports OData filtering, e.g. filter: "contains(FullName,'Smith Family')" or "UserDefinedIdentifier eq 'ABC123'".

NameTypeReqDescription
filterstring–OData $filter expression, e.g. "contains(FullName,'Smith')" or "PrimaryStatus eq 'InProgress'". Operators: eq, ne, gt, ge, lt, le, and, or, contains().
orderbystring–OData $orderby, e.g. "LastModifiedDateTime desc"
skipinteger–Number of results to skip, for pagination
topinteger–Max results to return (1-100, default 100)

No output schema declared.

No examples provided.

list_contacts ~153

List or search person contacts in Karbon. Supports OData filtering, e.g. filter: "contains(FullName,'Smith')" or "ContactType eq 'Client'".

NameTypeReqDescription
filterstring–OData $filter expression, e.g. "contains(FullName,'Smith')" or "PrimaryStatus eq 'InProgress'". Operators: eq, ne, gt, ge, lt, le, and, or, contains().
orderbystring–OData $orderby, e.g. "LastModifiedDateTime desc"
skipinteger–Number of results to skip, for pagination
topinteger–Max results to return (1-100, default 100)

No output schema declared.

No examples provided.

list_custom_fields ~54

List all custom field definitions for the Karbon tenant — field names, types (Text, Number, Date, Boolean, Colleague, ListSingleSelect, ListMultipleSelect), list options, and which entities they apply to.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_entity_files ~77

List the files attached to a work item, contact, or organization — name, size, mime type, created date, and a DownloadUrl usable with download_file. Download links expire 15 minutes after this call.

NameTypeReqDescription
entityKeystringyesThe key of the entity to list files for
entityTypestringyes–

No output schema declared.

No examples provided.

list_invoices ~172

List invoices in Karbon (read-only). Supports OData filtering, e.g. filter: "InvoiceStatus eq 'AwaitingPayment'" or "TotalAmountDue gt 0". Statuses: Approved, AwaitingPayment, Paid, Exported, Voided.

NameTypeReqDescription
filterstring–OData $filter expression, e.g. "contains(FullName,'Smith')" or "PrimaryStatus eq 'InProgress'". Operators: eq, ne, gt, ge, lt, le, and, or, contains().
orderbystring–OData $orderby, e.g. "LastModifiedDateTime desc"
skipinteger–Number of results to skip, for pagination
topinteger–Max results to return (1-100, default 100)

No output schema declared.

No examples provided.

list_organizations ~147

List or search organization contacts in Karbon. Supports OData filtering, e.g. filter: "contains(FullName,'Acme')".

NameTypeReqDescription
filterstring–OData $filter expression, e.g. "contains(FullName,'Smith')" or "PrimaryStatus eq 'InProgress'". Operators: eq, ne, gt, ge, lt, le, and, or, contains().
orderbystring–OData $orderby, e.g. "LastModifiedDateTime desc"
skipinteger–Number of results to skip, for pagination
topinteger–Max results to return (1-100, default 100)

No output schema declared.

No examples provided.

list_payments ~65

List payments recorded against invoices in Karbon (read-only). Supports pagination only — the Payments endpoint does not accept OData filters.

NameTypeReqDescription
skipinteger–Number of results to skip, for pagination
topinteger–Max results to return (1-100)

No output schema declared.

No examples provided.

list_teams ~61

List teams in Karbon (read-only). Supports OData filtering, e.g. filter: "contains(Name,'Tax')".

NameTypeReqDescription
filterstring–OData $filter expression
skipinteger––
topinteger––

No output schema declared.

No examples provided.

list_time_entries ~138

List individual time entries (read-only). Useful for reporting on time logged against clients or work items.

NameTypeReqDescription
filterstring–OData $filter expression, e.g. "contains(FullName,'Smith')" or "PrimaryStatus eq 'InProgress'". Operators: eq, ne, gt, ge, lt, le, and, or, contains().
orderbystring–OData $orderby, e.g. "LastModifiedDateTime desc"
skipinteger–Number of results to skip, for pagination
topinteger–Max results to return (1-100, default 100)

No output schema declared.

No examples provided.

list_timesheets ~147

List timesheets (read-only). Useful filters: "StartDate ge 2026-07-01", "UserKey eq '...'".

NameTypeReqDescription
filterstring–OData $filter expression, e.g. "contains(FullName,'Smith')" or "PrimaryStatus eq 'InProgress'". Operators: eq, ne, gt, ge, lt, le, and, or, contains().
orderbystring–OData $orderby, e.g. "LastModifiedDateTime desc"
skipinteger–Number of results to skip, for pagination
topinteger–Max results to return (1-100, default 100)

No output schema declared.

No examples provided.

list_users ~129

List Karbon users (team members) on this account.

NameTypeReqDescription
filterstring–OData $filter expression, e.g. "contains(FullName,'Smith')" or "PrimaryStatus eq 'InProgress'". Operators: eq, ne, gt, ge, lt, le, and, or, contains().
orderbystring–OData $orderby, e.g. "LastModifiedDateTime desc"
skipinteger–Number of results to skip, for pagination
topinteger–Max results to return (1-100, default 100)

No output schema declared.

No examples provided.

list_work_items ~186

List or search work items (jobs/engagements) in Karbon. Useful filters: "PrimaryStatus eq 'InProgress'", "AssigneeEmailAddress eq 'user@firm.com'", "DueDate lt 2026-08-01". PrimaryStatus values: Planned, ReadyToStart, InProgress, Waiting, Completed.

NameTypeReqDescription
filterstring–OData $filter expression, e.g. "contains(FullName,'Smith')" or "PrimaryStatus eq 'InProgress'". Operators: eq, ne, gt, ge, lt, le, and, or, contains().
orderbystring–OData $orderby, e.g. "LastModifiedDateTime desc"
skipinteger–Number of results to skip, for pagination
topinteger–Max results to return (1-100, default 100)

No output schema declared.

No examples provided.

list_work_templates ~141

List work templates available on this account. Use a WorkTemplateKey with create_work_item to create templated work.

NameTypeReqDescription
filterstring–OData $filter expression, e.g. "contains(FullName,'Smith')" or "PrimaryStatus eq 'InProgress'". Operators: eq, ne, gt, ge, lt, le, and, or, contains().
orderbystring–OData $orderby, e.g. "LastModifiedDateTime desc"
skipinteger–Number of results to skip, for pagination
topinteger–Max results to return (1-100, default 100)

No output schema declared.

No examples provided.

remove_team_member ~65

Remove a user from a team by their UserKey. Team membership can affect work visibility and assignment — confirm with the user before changing it.

NameTypeReqDescription
UserKeystringyesUserKey of the user to remove
teamKeystringyesThe Karbon TeamKey

No output schema declared.

No examples provided.

set_custom_field_values ~97

Set custom field values on an entity (contact, organization, or client group). Use list_custom_fields for the available definitions and get_custom_field_values to see what's currently set. Values are always passed as an array of strings, even for single values.

NameTypeReqDescription
CustomFieldValuesarrayyesThe custom field values to set on the entity
entityKeystringyesThe ContactKey, OrganizationKey, or ClientGroupKey

No output schema declared.

No examples provided.

update_business_card ~226

Update a business card (full replace via PUT) — this is how you change a contact's, organization's, or client group's email addresses, phone numbers, and addresses. Fetch the card first with get_business_card and send back the complete card with your changes, since omitted fields are cleared.

NameTypeReqDescription
Addressesarray––
EmailAddressesarray––
EntityKeystringyesThe key of the contact, organization, or client group this card belongs to
EntityTypestringyesThe type of entity this business card belongs to
FacebookLinkstring––
IsPrimaryCardboolean––
LinkedInLinkstring––
OrganizationKeystring–For a contact's card: the organization the contact works at
PhoneNumbersarray––
RoleOrTitlestring––
SkypeLinkstring––
TwitterLinkstring––
WebSitesarray––
businessCardKeystringyesThe Karbon BusinessCardKey to update

No output schema declared.

No examples provided.

update_client_group ~114

Update fields on an existing client group (partial update via PATCH). Only include the fields you want to change.

NameTypeReqDescription
ClientManagerstring––
ClientOwnerstring––
ContactTypestring––
EntityDescriptionobject––
FullNamestring––
PrimaryContactstring––
RestrictionLevelstring––
UserDefinedIdentifierstring––
clientGroupKeystringyesThe Karbon ClientGroupKey to update

No output schema declared.

No examples provided.

update_contact ~127

Update fields on an existing person contact (partial update via PATCH). Only include the fields you want to change.

NameTypeReqDescription
ClientManagerstring––
ClientOwnerstring––
ContactTypestring––
FirstNamestring––
LastNamestring––
MiddleNamestring––
PreferredNamestring––
RestrictionLevelstring––
Salutationstring––
UserDefinedIdentifierstring––
contactKeystringyesThe Karbon ContactKey to update

No output schema declared.

No examples provided.

update_organization ~95

Update fields on an existing organization (partial update via PATCH). Only include the fields you want to change.

NameTypeReqDescription
ClientManagerstring––
ClientOwnerstring––
ContactTypestring––
FullNamestring––
RestrictionLevelstring––
UserDefinedIdentifierstring––
organizationKeystringyesThe Karbon OrganizationKey to update

No output schema declared.

No examples provided.

update_work_item ~120

Update fields on an existing work item (partial update via PATCH). Only include the fields you want to change.

NameTypeReqDescription
AssigneeEmailAddressstring–Must be an existing Karbon user's email
DeadlineDatestring––
Descriptionstring––
DueDatestring––
StartDatestring–ISO 8601 date or date-time
Titlestring––
WorkTypestring––
workItemKeystringyesThe Karbon WorkItemKey to update

No output schema declared.

No examples provided.

update_work_schedule ~118

Update a work schedule (partial via PATCH). The API only supports changing the end date and the assignee here. Note: changing AssigneeUserKey reassigns every not-yet-started work item the schedule has generated — confirm with the user first.

NameTypeReqDescription
AssigneeUserKeystring––
ScheduleEndDatestring|null–ISO 8601 date to stop the schedule; pass null to clear the end date (run forever)
workScheduleKeystringyesThe Karbon WorkScheduleKey to update

No output schema declared.

No examples provided.

upload_file ~297

Upload a file to Karbon and attach it to a work item, contact, organization, or client group (at least one key is required). SIZE LIMITS: keep uploads small — Karbon rejects oversized uploads, and this server reads the whole file into memory. Prefer filePath (a path on the machine running this MCP server) whenever possible; only use contentBase64 for small files (roughly under 1 MB), because base64 inflates data ~33% and large payloads can exceed the AI client's message limits or be truncated mid-transfer. If a file seems large (tens of MB or more), tell the user to upload it through Karbon's own UI instead. SECURITY: only upload files the user explicitly pointed you to. Never upload configuration files, credential stores, environment files, keys, or anything the user has not named — uploading puts the file's contents in the Karbon tenant.

NameTypeReqDescription
clientGroupKeystring––
contactKeystring––
contentBase64string–Base64-encoded file content — small files only; requires fileName
fileNamestring–File name including extension. Required with contentBase64; defaults to the filePath basename otherwise.
filePathstring–Absolute path of the file on the machine running this MCP server (preferred)
organizationKeystring––
workItemKeystring––

No output schema declared.

No examples provided.

Install

How do I install the io.github.Mad-Man-Dan/karbon-mcp-server server?

io.github.Mad-Man-Dan/karbon-mcp-server runs locally as an npm package, launched with npx -y karbon-mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · karbon-mcp-server

# add to Claude Code
claude mcp add mad-man-dan-karbon-mcp-server -- npx -y karbon-mcp-server
Common questions

What is the io.github.Mad-Man-Dan/karbon-mcp-server server?

io.github.Mad-Man-Dan/karbon-mcp-server is listed in the public MCP registry as io.github.Mad-Man-Dan/karbon-mcp-server. Unofficial MCP server for Karbon practice management: contacts, work, time, invoices, payments. This page covers its npm package (karbon-mcp-server).

Is the io.github.Mad-Man-Dan/karbon-mcp-server server safe to use?

io.github.Mad-Man-Dan/karbon-mcp-server scores 87 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.Mad-Man-Dan/karbon-mcp-server server expose?

io.github.Mad-Man-Dan/karbon-mcp-server exposes 50 tools: list_contacts, get_contact, create_contact, update_contact, list_organizations, and 45 more. Their descriptions and schemas cost roughly 5,478 tokens of context every time the server is loaded.

Is the io.github.Mad-Man-Dan/karbon-mcp-server server still maintained?

io.github.Mad-Man-Dan/karbon-mcp-server is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.Mad-Man-Dan/karbon-mcp-server server under?

io.github.Mad-Man-Dan/karbon-mcp-server declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.