CAT
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

FreelanceOS

io.github.sohlin2/freelance-os
37 toolsauthSTDIO, HTTPregistry active
Summary

You're juggling freelance clients, proposals, and invoices across spreadsheets and need them in one place Claude can access. This server centralizes your freelance operations so you can ask Claude to draft proposals for specific clients, log time entries, generate invoices, track project scope, and set follow-up reminders without switching contexts. It's built for solo consultants and freelancers who want their business admin accessible through conversation. The stdio and streamable HTTP transports mean you can run it locally or hit the hosted Railway instance. Reach for this when you're tired of context switching between your chat and three different tools just to answer "what did I bill this month" or "when's my next client check-in."

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Tools

Public tool metadata for what this MCP can expose to an agent.

37 tools
clients.records.createCreate a new client record in the FreelanceOS database. Use this tool whenever a freelancer mentions a new client they're starting to work with or want to begin tracking — capturing contact details and default billing rate upfront saves time when creating projects and invoic...7 params

Create a new client record in the FreelanceOS database. Use this tool whenever a freelancer mentions a new client they're starting to work with or want to begin tracking — capturing contact details and default billing rate upfront saves time when creating projects and invoic...

Parameters* required
namestring
Full name or company name of the client (required)
emailstring
Primary email address used to contact this client
notesstring
Free-form notes about this client such as communication preferences, contract terms, or background context
phonestring
Phone number for the client, including country code if international
companystring
Company or organisation name if different from the individual contact name
currencystring
ISO 4217 three-letter currency code for all monetary amounts billed to this client (e.g. USD, EUR, GBP)default: USD
billing_ratenumber
Default hourly billing rate for this client, used as the fallback when creating time entries and invoices
clients.records.getRetrieve the full profile for a single client, including all associated projects and follow-up communications. Use this tool when a freelancer asks about a specific client by name or ID, or when you need complete client context before drafting a proposal, invoice, or follow-up.1 params

Retrieve the full profile for a single client, including all associated projects and follow-up communications. Use this tool when a freelancer asks about a specific client by name or ID, or when you need complete client context before drafting a proposal, invoice, or follow-up.

Parameters* required
client_idstring
The unique identifier (UUID) of the client to retrieve
clients.records.listList all active (non-archived) clients with optional name search, sorting, and pagination. Use this tool when a freelancer wants an overview of their client roster, needs to look up a client by name, or when you need to present a list of clients for the user to choose from.5 params

List all active (non-archived) clients with optional name search, sorting, and pagination. Use this tool when a freelancer wants an overview of their client roster, needs to look up a client by name, or when you need to present a list of clients for the user to choose from.

Parameters* required
limitinteger
Maximum number of client records to return in a single response (1–100)default: 20
offsetinteger
Number of records to skip before returning results, used for paginating through large client listsdefault: 0
searchstring
Partial name string to filter clients by — performs a case-insensitive substring match on the client name field
sort_bystring
The client field to sort results by: name (alphabetical), created_at (when added), updated_at (recently modified), or billing_rateone of name · created_at · updated_at · billing_ratedefault: created_at
sort_dirstring
Sort direction: asc for ascending (A→Z, oldest first) or desc for descending (Z→A, newest first)one of asc · descdefault: desc
clients.records.updateUpdate one or more fields on an existing client record. Use this tool when a freelancer wants to correct contact details, change a billing rate, update notes, or make any other modification to a client's stored information — only the fields you provide will be changed, all o...8 params

Update one or more fields on an existing client record. Use this tool when a freelancer wants to correct contact details, change a billing rate, update notes, or make any other modification to a client's stored information — only the fields you provide will be changed, all o...

Parameters* required
namestring
New full name or company name to replace the existing client name
emailvalue
New primary email address for the client, or null to clear it
notesvalue
New free-form notes to replace the existing notes, or null to clear them
phonevalue
New phone number for the client, or null to clear it
companyvalue
New company or organisation name, or null to clear it
currencystring
New ISO 4217 three-letter currency code to use for this client's billing (e.g. USD, EUR, GBP)
client_idstring
The unique identifier (UUID) of the client record to update
billing_ratevalue
New default hourly billing rate for this client, or null to clear it
clients.records.archiveSoft-delete a client by setting their archived_at timestamp, hiding them from all active client lists while preserving their full history. Use this tool when a freelancer is done working with a client and wants to retire the record — the client and all linked projects, invoi...1 params

Soft-delete a client by setting their archived_at timestamp, hiding them from all active client lists while preserving their full history. Use this tool when a freelancer is done working with a client and wants to retire the record — the client and all linked projects, invoi...

Parameters* required
client_idstring
The unique identifier (UUID) of the client to archive
projects.records.createCreate a new project linked to an existing client and persist it to the FreelanceOS database. Use this tool when a freelancer is starting new work for a client and needs to track budget, timeline, and status across the project lifecycle.7 params

Create a new project linked to an existing client and persist it to the FreelanceOS database. Use this tool when a freelancer is starting new work for a client and needs to track budget, timeline, and status across the project lifecycle.

Parameters* required
namestring
Short, descriptive project name used throughout the FreelanceOS interface
budgetnumber
Total agreed budget for this project expressed as a positive number
currencystring
Three-letter ISO 4217 currency code for the budget amount, e.g. USD, EUR, GBPdefault: USD
end_datestring
Expected project end or delivery date in YYYY-MM-DD format
client_idstring
UUID of the client this project belongs to — must reference an existing client record
start_datestring
Planned project start date in YYYY-MM-DD format, used for timeline reporting
descriptionstring
Optional longer description summarising the scope and goals of this project
projects.records.getRetrieve full details for a single project, including the associated client name and contact information. Use this tool when a freelancer asks about a specific project's status, budget, or timeline.1 params

Retrieve full details for a single project, including the associated client name and contact information. Use this tool when a freelancer asks about a specific project's status, budget, or timeline.

Parameters* required
project_idstring
Unique UUID identifier of the project record to retrieve
projects.records.listList all non-archived projects with optional full-text search, status and client filters, sorting, and pagination. Use this tool when a freelancer wants an overview of their work portfolio or needs to locate a specific project by name or client.7 params

List all non-archived projects with optional full-text search, status and client filters, sorting, and pagination. Use this tool when a freelancer wants an overview of their work portfolio or needs to locate a specific project by name or client.

Parameters* required
limitinteger
Maximum number of project records to return in a single response, between 1 and 100default: 20
offsetinteger
Zero-based index offset into the full result set used for paginating through large listsdefault: 0
searchstring
Case-insensitive partial match applied to the project name field
statusstring
Filter results to only projects with this lifecycle status valueone of active · paused · completed
sort_bystring
Database column used to order the returned project rowsone of name · created_at · updated_at · start_date · budgetdefault: created_at
sort_dirstring
Sort direction: asc for oldest-first or lowest-first, desc for newest-first or highest-firstone of asc · descdefault: desc
client_idstring
Restrict results to projects belonging to this specific client UUID
projects.records.updateUpdate one or more fields on an existing project record, including name, description, budget, dates, or lifecycle status. Use this tool when a freelancer wants to edit project details, revise the budget, adjust the timeline, or mark a project as paused or completed.8 params

Update one or more fields on an existing project record, including name, description, budget, dates, or lifecycle status. Use this tool when a freelancer wants to edit project details, revise the budget, adjust the timeline, or mark a project as paused or completed.

Parameters* required
namestring
Replacement name for the project, must be at least one character long
budgetvalue
Revised total budget amount expressed as a positive number, or null to clear it
statusstring
New lifecycle status to assign: active, paused, or completedone of active · paused · completed
currencystring
Replacement three-letter ISO 4217 currency code for the budget field
end_datevalue
Revised expected end date in YYYY-MM-DD format, or null to clear it
project_idstring
Unique UUID identifier of the project record to update
start_datevalue
Revised project start date in YYYY-MM-DD format, or null to clear it
descriptionvalue
Replacement description for the project scope and goals, or null to clear it
projects.records.archiveSoft-delete a project by setting its archived_at timestamp, hiding it from all active project lists while preserving all historical data. Use this tool when a freelancer wants to close out a completed or cancelled project without permanently destroying its records.1 params

Soft-delete a project by setting its archived_at timestamp, hiding it from all active project lists while preserving all historical data. Use this tool when a freelancer wants to close out a completed or cancelled project without permanently destroying its records.

Parameters* required
project_idstring
Unique UUID identifier of the active project record to archive
proposals.records.createStore a new proposal for a project, capturing all relevant details such as title, deliverables, pricing, and expiry date. Use when the freelancer has drafted proposal content and wants to persist it to the database for tracking and future reference.7 params

Store a new proposal for a project, capturing all relevant details such as title, deliverables, pricing, and expiry date. Use when the freelancer has drafted proposal content and wants to persist it to the database for tracking and future reference.

Parameters* required
titlestring
Short descriptive title that identifies the proposal at a glance
amountnumber
Total monetary value being proposed for the project engagement
contentstring
Free-form proposal body describing deliverables, timeline, and terms
currencystring
Three-letter ISO 4217 currency code for the proposal amountdefault: USD
client_idstring
UUID of the client this proposal is being created for
project_idstring
UUID of the project this proposal is scoped and billed against
valid_untilstring
Expiry date after which the proposal is no longer valid (YYYY-MM-DD)
proposals.records.getRetrieve a single proposal by its unique identifier, returning all stored fields including status, amount, and content. Use when the freelancer asks to view, review, or reference the details of a specific proposal.1 params

Retrieve a single proposal by its unique identifier, returning all stored fields including status, amount, and content. Use when the freelancer asks to view, review, or reference the details of a specific proposal.

Parameters* required
proposal_idstring
UUID of the proposal record to retrieve from the database
proposals.records.listList proposals filtered by project, client, or status with support for sorting and pagination. Use when the freelancer asks for proposal history, wants to audit outstanding proposals, or needs to check the status of proposals sent to a client.7 params

List proposals filtered by project, client, or status with support for sorting and pagination. Use when the freelancer asks for proposal history, wants to audit outstanding proposals, or needs to check the status of proposals sent to a client.

Parameters* required
limitinteger
Maximum number of proposal records to return in this pagedefault: 20
offsetinteger
Number of records to skip for cursor-based paginationdefault: 0
statusstring
Filter proposals to only those matching the given lifecycle statusone of draft · sent · accepted · declined · expired
sort_bystring
Database column to use as the primary sort key for resultsone of created_at · updated_at · amount · titledefault: created_at
sort_dirstring
Direction to sort results — ascending or descendingone of asc · descdefault: desc
client_idstring
Narrow results to proposals associated with this client UUID
project_idstring
Narrow results to proposals belonging to this project UUID
proposals.records.updateUpdate one or more fields on an existing proposal, including content, pricing, status, or key timestamps. Use when the freelancer wants to revise proposal details, mark it as sent, or record a client response without going through the full accept flow.9 params

Update one or more fields on an existing proposal, including content, pricing, status, or key timestamps. Use when the freelancer wants to revise proposal details, mark it as sent, or record a client response without going through the full accept flow.

Parameters* required
titlestring
Replacement title to give the proposal a new descriptive name
amountvalue
Revised total monetary value for the project engagement
statusstring
New lifecycle status to assign to the proposal recordone of draft · sent · accepted · declined · expired
contentvalue
Replacement body text describing deliverables, scope, and terms
sent_atvalue
ISO 8601 timestamp recording when the proposal was delivered to the client
currencystring
Replacement three-letter ISO 4217 currency code for the amount
proposal_idstring
UUID of the proposal record that should be updated
valid_untilvalue
New expiry date after which the proposal is no longer valid (YYYY-MM-DD)
responded_atvalue
ISO 8601 timestamp recording when the client replied or responded
proposals.records.acceptMark a proposal as accepted, record the response timestamp, and automatically seed the linked project's scope_definitions from the proposal deliverables in a single atomic operation. Use when the freelancer confirms that a client has accepted the proposal and work is ready to...1 params

Mark a proposal as accepted, record the response timestamp, and automatically seed the linked project's scope_definitions from the proposal deliverables in a single atomic operation. Use when the freelancer confirms that a client has accepted the proposal and work is ready to...

Parameters* required
proposal_idstring
UUID of the proposal that the client has agreed to accept
invoices.records.createCreate and persist a new invoice with line items, tax, and totals in the FreelanceOS database. Use when the freelancer wants to generate and save a billable invoice for a completed or ongoing project.13 params

Create and persist a new invoice with line items, tax, and totals in the FreelanceOS database. Use when the freelancer wants to generate and save a billable invoice for a completed or ongoing project.

Parameters* required
notesvalue
Optional freeform notes or payment instructions to include on the invoice
totalnumber
Final amount due including subtotal and tax, in the invoice currencydefault: 0
currencystring
Three-letter ISO 4217 currency code for all monetary values on this invoice, e.g. USD, EUR, GBPdefault: USD
due_datevalue
Payment deadline for the invoice formatted as YYYY-MM-DD, e.g. 2026-04-30
subtotalnumber
Sum of all line item amounts before tax is applied, in the invoice currencydefault: 0
tax_ratevalue
Applicable tax rate expressed as a decimal fraction, e.g. 0.1 for 10% GST or sales tax
client_idstring
UUID of the client being billed; must match an existing client record
issued_atvalue
ISO 8601 datetime when the invoice was formally issued to the client, defaults to now if omitted
line_itemsarray
Ordered list of billable line items that make up the body of the invoice
project_idstring
UUID of the project this invoice covers; used to group invoices by engagement
tax_amountnumber
Calculated tax value derived from subtotal × tax_rate, in the invoice currencydefault: 0
proposal_idvalue
UUID of the originating proposal if this invoice was generated from an approved proposal
invoice_numberstring
Unique human-readable invoice identifier shown on the document, e.g. INV-001
invoices.records.getRetrieve the full details of a single invoice by its UUID. Use when the freelancer asks to view, review, or share the details of a specific invoice.1 params

Retrieve the full details of a single invoice by its UUID. Use when the freelancer asks to view, review, or share the details of a specific invoice.

Parameters* required
invoice_idstring
UUID of the invoice to retrieve; must reference a non-archived invoice owned by this user
invoices.records.listReturn a paginated, filtered list of invoices for the authenticated freelancer. Use when the freelancer asks about outstanding, paid, overdue, or draft invoices, or wants a revenue summary for a date range.9 params

Return a paginated, filtered list of invoices for the authenticated freelancer. Use when the freelancer asks about outstanding, paid, overdue, or draft invoices, or wants a revenue summary for a date range.

Parameters* required
limitinteger
Maximum number of invoice records to return in a single page, between 1 and 100default: 20
offsetinteger
Zero-based index of the first record to return, used for paginating through large result setsdefault: 0
statusstring
Restrict results to invoices with this specific lifecycle status, e.g. "overdue" to surface unpaid past-due invoicesone of draft · sent · paid · overdue · void
date_tostring
Return only invoices issued on or before this date, formatted as YYYY-MM-DD
sort_bystring
Database column used to order the result set before pagination is appliedone of created_at · due_date · total · invoice_numberdefault: created_at
sort_dirstring
Direction of the sort: "asc" for oldest/lowest first, "desc" for newest/highest firstone of asc · descdefault: desc
client_idstring
Restrict results to invoices belonging to this specific client UUID
date_fromstring
Return only invoices issued on or after this date, formatted as YYYY-MM-DD
project_idstring
Restrict results to invoices associated with this specific project UUID
invoices.records.updateUpdate one or more fields on an existing invoice, including its status or financial totals. Use when the freelancer marks an invoice as sent, records a payment, corrects line items, or changes the due date.11 params

Update one or more fields on an existing invoice, including its status or financial totals. Use when the freelancer marks an invoice as sent, records a payment, corrects line items, or changes the due date.

Parameters* required
notesvalue
Revised freeform notes or payment instructions to display on the invoice; set to null to clear
totalnumber
Revised final amount due including subtotal and tax, in the invoice currency
statusstring
New lifecycle status for the invoice, e.g. "paid" when the client has settled the balanceone of draft · sent · paid · overdue · void
paid_atvalue
ISO 8601 datetime when payment was received; set when marking an invoice as paid
due_datevalue
Revised payment deadline formatted as YYYY-MM-DD; set to null to remove the due date
subtotalnumber
Revised sum of all line item amounts before tax, in the invoice currency
tax_ratevalue
Revised tax rate as a decimal fraction, e.g. 0.15 for 15%; set to null to remove tax
issued_atvalue
Revised ISO 8601 datetime when the invoice was formally issued to the client
invoice_idstring
UUID of the invoice to update; must reference an existing invoice owned by this user
line_itemsarray
Replacement array of billable line items that fully overwrites the existing line items on the invoice
tax_amountnumber
Revised calculated tax value derived from the updated subtotal and tax rate
time.entries.createLog a time entry against a project to record hours worked. Use when the freelancer reports time spent on a task, meeting, or deliverable so it can be tracked and later billed to the client.5 params

Log a time entry against a project to record hours worked. Use when the freelancer reports time spent on a task, meeting, or deliverable so it can be tracked and later billed to the client.

Parameters* required
billableboolean
Whether this time entry should be billed to the client on the next invoicedefault: true
entry_datestring
Calendar date when the work was performed in YYYY-MM-DD format, defaults to today
project_idstring
UUID of the project to log this time entry against
descriptionstring
Brief description of the work performed during this time block
duration_minutesinteger
Total duration of the work session expressed in whole minutes
time.entries.getRetrieve a single time entry record by its unique identifier. Use when the freelancer asks to view the details of a specific logged time entry, such as its description, duration, or billable status.1 params

Retrieve a single time entry record by its unique identifier. Use when the freelancer asks to view the details of a specific logged time entry, such as its description, duration, or billable status.

Parameters* required
time_entry_idstring
Unique UUID identifier of the time entry record to retrieve
time.entries.listList time entries with optional filtering by project, date range, and billable status. Use when reviewing logged hours for a project, preparing a timesheet, or checking what work has been recorded before generating an invoice.8 params

List time entries with optional filtering by project, date range, and billable status. Use when reviewing logged hours for a project, preparing a timesheet, or checking what work has been recorded before generating an invoice.

Parameters* required
limitinteger
Maximum number of time entry records to return in a single pagedefault: 20
offsetinteger
Number of records to skip for cursor-based pagination through large result setsdefault: 0
sort_bystring
Database column to use when ordering the returned time entriesone of entry_date · created_at · duration_minutesdefault: entry_date
billableboolean
Filter results to only billable or only non-billable time entries
end_datestring
Include only entries on or before this date in YYYY-MM-DD format
sort_dirstring
Direction to sort results — asc for oldest first, desc for newest firstone of asc · descdefault: desc
project_idstring
UUID of the project to filter time entries by, omit to list across all projects
start_datestring
Include only entries on or after this date in YYYY-MM-DD format
time.entries.updateUpdate one or more fields on an existing time entry record. Use when the freelancer needs to correct a logged entry's duration, description, date, or billable flag after it was originally saved.5 params

Update one or more fields on an existing time entry record. Use when the freelancer needs to correct a logged entry's duration, description, date, or billable flag after it was originally saved.

Parameters* required
billableboolean
Updated flag indicating whether this time entry should be billed to the client
entry_datestring
Corrected date when the work was performed in YYYY-MM-DD format
descriptionstring
Revised description of the work performed during this time block
time_entry_idstring
Unique UUID identifier of the time entry record to update
duration_minutesinteger
Corrected duration of the work session expressed in whole minutes
time.entries.archiveSoft-delete a time entry by setting its archived_at timestamp, hiding it from all queries. Use when the freelancer wants to permanently remove an incorrectly logged or duplicate time entry from their records without destroying the underlying data.1 params

Soft-delete a time entry by setting its archived_at timestamp, hiding it from all queries. Use when the freelancer wants to permanently remove an incorrectly logged or duplicate time entry from their records without destroying the underlying data.

Parameters* required
time_entry_idstring
Unique UUID identifier of the time entry record to soft-delete by archiving
time.entries.aggregateCalculate the total minutes and hours logged against a project over an optional date range. Use when preparing an invoice, verifying billable hours before sending to a client, or generating a summary timesheet report.4 params

Calculate the total minutes and hours logged against a project over an optional date range. Use when preparing an invoice, verifying billable hours before sending to a client, or generating a summary timesheet report.

Parameters* required
end_datestring
End of the aggregation window in YYYY-MM-DD format, inclusive
project_idstring
UUID of the project whose time entries should be summed and aggregated
start_datestring
Beginning of the aggregation window in YYYY-MM-DD format, inclusive
billable_onlyboolean
When true, only sum time entries that are marked as billable to the clientdefault: true
scope.definition.createDefine and persist the agreed project scope with deliverables, boundaries, and exclusions. Use this tool when starting a new project or immediately after a proposal is accepted by the client to establish a clear, shared understanding of what will be built.5 params

Define and persist the agreed project scope with deliverables, boundaries, and exclusions. Use this tool when starting a new project or immediately after a proposal is accepted by the client to establish a clear, shared understanding of what will be built.

Parameters* required
boundariesstring
Explicit statement of what work is inside and outside the agreed scope for this project
exclusionsstring
Specific work items or deliverables that are explicitly excluded from this project scope
project_idstring
UUID of the project this scope definition belongs to
assumptionsstring
Assumptions made by the freelancer when defining this scope that the client should be aware of
deliverablesstring
Detailed free-form description of all outputs and artifacts that will be delivered to the client
scope.definition.getRetrieve the current active scope definition for a project, including deliverables, boundaries, assumptions, and exclusions. Use when the freelancer wants to review exactly what was agreed with the client before starting work or answering a scope question.1 params

Retrieve the current active scope definition for a project, including deliverables, boundaries, assumptions, and exclusions. Use when the freelancer wants to review exactly what was agreed with the client before starting work or answering a scope question.

Parameters* required
project_idstring
UUID of the project whose scope definition should be retrieved
scope.definition.updateUpdate one or more fields of the active scope definition for a project. Use when the client and freelancer have mutually agreed to change the scope and the persisted record needs to reflect the new agreement.5 params

Update one or more fields of the active scope definition for a project. Use when the client and freelancer have mutually agreed to change the scope and the persisted record needs to reflect the new agreement.

Parameters* required
boundariesvalue
Revised statement of what work is inside and outside the agreed scope after the change
exclusionsvalue
Revised list of work items or deliverables that are explicitly excluded from the updated scope
project_idstring
UUID of the project whose scope definition should be updated
assumptionsvalue
Revised assumptions that underpin the updated scope agreement with the client
deliverablesstring
Revised description of all outputs and artifacts that will be delivered under the updated scope
scope.changes.logRecord a client scope change request with classification and impact notes to maintain an auditable history of scope creep. Use this tool ONLY after the freelancer confirms they want to log the change — never log speculatively without explicit instruction.6 params

Record a client scope change request with classification and impact notes to maintain an auditable history of scope creep. Use this tool ONLY after the freelancer confirms they want to log the change — never log speculatively without explicit instruction.

Parameters* required
impactstring
Estimated impact of the change in terms of additional time, cost, or effort required
project_idstring
UUID of the project this scope change request is associated with
descriptionstring
Clear description of the change the client is requesting beyond the original agreed scope
resolved_atstring
ISO 8601 datetime when this scope change request was resolved or formally accepted
requested_atstring
ISO 8601 datetime when the client requested this change — defaults to current timestamp if omitted
classificationstring
Classification of the change: in_scope (covered by existing agreement), out_of_scope (additional billable work), needs_review (ambiguous — requires discussion with client)one of in_scope · out_of_scope · needs_review
scope.changes.listList all scope change requests logged against a project, with optional filtering by classification and configurable sort order. Use when reviewing scope creep history, preparing a change-order summary, or auditing out-of-scope requests for billing.6 params

List all scope change requests logged against a project, with optional filtering by classification and configurable sort order. Use when reviewing scope creep history, preparing a change-order summary, or auditing out-of-scope requests for billing.

Parameters* required
limitinteger
Maximum number of scope change records to return in a single pagedefault: 20
offsetinteger
Number of records to skip for pagination — use with limit to page through resultsdefault: 0
sort_bystring
Database field used to order the returned scope change recordsone of requested_at · created_atdefault: requested_at
sort_dirstring
Sort direction — desc returns the most recent changes firstone of asc · descdefault: desc
project_idstring
UUID of the project whose scope change history should be listed
classificationstring
Optional filter to return only changes of a specific classification typeone of in_scope · out_of_scope · needs_review
scope.definition.checkRetrieve the agreed scope definition and full change history for a project so Claude can assess whether a new client request falls within the original agreement. Use this tool when a client asks for something new and the freelancer wants an informed opinion on whether it is in...2 params

Retrieve the agreed scope definition and full change history for a project so Claude can assess whether a new client request falls within the original agreement. Use this tool when a client asks for something new and the freelancer wants an informed opinion on whether it is in...

Parameters* required
project_idstring
UUID of the project against whose scope the new request should be assessed
request_descriptionstring
Detailed description of the new client request to be evaluated against the agreed project scope
followups.messages.createStore a drafted follow-up message in the FreelanceOS database. Use when the freelancer has composed a follow-up and wants to save it for tracking purposes before or after sending it to the client.5 params

Store a drafted follow-up message in the FreelanceOS database. Use when the freelancer has composed a follow-up and wants to save it for tracking purposes before or after sending it to the client.

Parameters* required
typestring
Category of follow-up: proposal_follow_up, invoice_overdue, check_in, awaiting_response, or otherone of proposal_follow_up · invoice_overdue · check_in · awaiting_response · otherdefault: check_in
contentstring
Full body text of the follow-up message to be saved and potentially sent
subjectstring
Subject line or brief title summarizing the purpose of this follow-up message
client_idstring
UUID of the client this follow-up message is addressed to
project_idstring
UUID of the specific project this follow-up is related to, if applicable
followups.messages.getRetrieve a single follow-up record by its unique ID. Use when the freelancer asks to view the full details of a specific saved follow-up, including its content, type, and sent status.1 params

Retrieve a single follow-up record by its unique ID. Use when the freelancer asks to view the full details of a specific saved follow-up, including its content, type, and sent status.

Parameters* required
followup_idstring
Unique UUID identifier of the follow-up record to retrieve
followups.messages.listList and filter follow-up records for a client or project with pagination support. Use when the freelancer asks to review follow-up history, check outstanding drafts, or audit all sent communications for a given client.8 params

List and filter follow-up records for a client or project with pagination support. Use when the freelancer asks to review follow-up history, check outstanding drafts, or audit all sent communications for a given client.

Parameters* required
sentboolean
Pass true to return only sent follow-ups, false to return only unsent drafts
typestring
Filter results to a specific follow-up category such as invoice_overdue or check_inone of proposal_follow_up · invoice_overdue · check_in · awaiting_response · other
limitinteger
Maximum number of follow-up records to return in a single responsedefault: 20
offsetinteger
Number of records to skip for cursor-based pagination through large result setsdefault: 0
sort_bystring
Database column to use when ordering the returned follow-up recordsone of created_at · sent_atdefault: created_at
sort_dirstring
Direction to sort results — asc for oldest first, desc for newest firstone of asc · descdefault: desc
client_idstring
UUID of the client whose follow-ups should be returned
project_idstring
UUID of the project to narrow results to follow-ups for that project
followups.messages.updateUpdate the content or metadata of an existing follow-up record. Use when the freelancer wants to revise a drafted follow-up's subject, body, type, or project association before sending it to the client.5 params

Update the content or metadata of an existing follow-up record. Use when the freelancer wants to revise a drafted follow-up's subject, body, type, or project association before sending it to the client.

Parameters* required
typestring
New category to assign this follow-up, such as changing check_in to invoice_overdueone of proposal_follow_up · invoice_overdue · check_in · awaiting_response · other
contentstring
Replacement message body text to overwrite the existing follow-up content
subjectstring
Replacement subject line to overwrite the existing follow-up subject
project_idvalue
UUID of a project to associate with this follow-up, or null to remove the project link
followup_idstring
Unique UUID of the follow-up record that should be updated
followups.sent.markRecord the current timestamp as the sent date on a follow-up, transitioning it from draft to sent status. Use when the freelancer confirms they have actually sent the follow-up message to the client outside of FreelanceOS.1 params

Record the current timestamp as the sent date on a follow-up, transitioning it from draft to sent status. Use when the freelancer confirms they have actually sent the follow-up message to the client outside of FreelanceOS.

Parameters* required
followup_idstring
Unique UUID of the follow-up record that the freelancer has just sent to the client
followups.context.getFetch all relevant context needed to draft an effective follow-up for a client, including outstanding invoices, recent follow-up history, and client contact details. Always call this tool before followups.create so the drafted message is informed by the client's current accoun...2 params

Fetch all relevant context needed to draft an effective follow-up for a client, including outstanding invoices, recent follow-up history, and client contact details. Always call this tool before followups.create so the drafted message is informed by the client's current accoun...

Parameters* required
client_idstring
UUID of the client for whom follow-up context — invoices, prior messages, contact info — should be assembled
project_idstring
UUID of a specific project to restrict invoice context to that project only, rather than all client invoices
Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Configuration

FREELANCEOS_API_KEY*secret

FreelanceOS API key for MCP server authentication

Registryactive
Packagefreelance-os
TransportSTDIO, HTTP
AuthRequired
UpdatedApr 7, 2026
Open website