Mason Tools - Reference Guide
Learn about the tools that enable Mason to work for you.
- Read tools look things up and never change your data. Mason uses them freely to gather context.
- Write tools create, change, or delete records. Write tools will request your approval in Ressio before anything is saved, so you always review changes first.
Read tools
Mason has the following tools available to help you gather context, answer questions, and run reports.
Conversation & reasoning
|
Tool |
What it does |
|
askUser |
Presents a short set of predefined choices and waits for you to pick one. Mason uses this to resolve ambiguity - like which of three similarly named projects you meant - before it writes anything. |
|
askOpenEnded |
Asks you an open-ended question and waits for a typed answer. Used when the needed input can't be reduced to a list of options, such as a description or a dollar figure. |
|
calculator |
Performs arithmetic and date math reliably. Handles things like markup rollups, unit conversions, and "how many working days between these two dates." |
Account & company
|
Tool |
What it does |
|
listCompanies |
Lists the Ressio companies where your account has an active membership. Used to pick the right company when you belong to more than one. |
|
getUsers |
Returns active users relevant to project setup and access - team members and field users by default, plus a specific project's customers and admins when a project is named - each with role, contact info, and shift/rate details. Used to resolve names to the right people for assignments, access, and prepared-by fields. |
|
getCustomerAccounts |
Searches your company's customer accounts by name. Used to attach the right existing customer to a new project instead of creating a duplicate. |
|
getProjectTypes |
Lists the active project types your company has configured. Used when setting up a new project. |
Projects
|
Tool |
What it does |
|
listProjects |
Lists the projects you have access to, with stage, customer, and key dates. The usual starting point for almost any request that names a project. |
|
getProject |
Returns full detail for one project — lifecycle stage, customer, address, cost structure, budget mode, team, and dates. |
|
researchProjects |
Answers questions that span multiple projects at once, aggregating across your portfolio rather than looking at a single job. Useful for questions like "which projects are behind schedule?" |
|
searchKnowledgeBase |
Searches Ressio's Knowledge Base documentation and help content. Mason uses this to answer "how do I do X in Ressio" questions accurately. |
Estimating
|
Tool |
What it does |
|
getEstimate |
Returns the project estimate with its full category and cost-item tree, calculated totals, and locked-estimate status. Required before any estimate write, since writes need the estimate ID. |
|
getCostItems |
Looks up specific cost items on a project by ID or text search across name, description, and internal notes. Used to find the exact row to edit or reference. Note each result is a full priced row (unit price, builder/customer cost, cost code/type, deep link), not just a name |
|
analyzeEstimate |
Compares an estimate's category structure against a project-type-aware checklist of standard phases and common gaps. Returns what's likely missing, at either rough-order-of-magnitude or bid-ready strictness. |
|
searchSimilarEstimates |
Finds comparable past projects from your own locked-estimate history by matching scope categories, filtered by contract value range and lookback period. Good for sanity-checking a new number against what you've actually built. |
|
extractScopeFromDocument |
Reads an uploaded document — plans, a scope narrative, an architect's spec, a competitor bid — and pulls out a structured list of scope items. Feeds buildEstimateFromScope. |
|
listEstimateTemplates |
Lists the template projects available to start a new estimate from. Used before createProject with a template or before applyEstimateTemplate. |
|
getCostCatalog |
Returns your company's reusable Cost Catalog items with stable IDs, pricing, reference details, and cost-group children. Paginated, and flags duplicate names so the right item gets picked. |
|
getCostCodes |
Returns active company cost codes by ID or name search. Pass a project ID when picking a code for time entries so results match the Time Clock picker. |
Budget & change orders
|
Tool |
What it does |
|
getBudget |
Returns the project budget — category rollups, individual rows, totals, and a direct link to the budget view in Ressio. |
|
getApprovals |
Returns the approval documents on a project, including selections, change orders, and purchase orders, with their current status. Answers "what's waiting on the customer?" |
Selections
|
Tool |
What it does |
|
getSelection |
Returns one selection in full: status, due date, any linked schedule task, the choice-group and choice tree, and cost details. Needed before editing choices or groups. |
Schedule
|
Tool |
What it does |
|
getSchedule |
Returns the complete project schedule — tasks, subtasks, dependencies, assignments, and calendar settings. |
|
identifyScheduleConflicts |
Scans across all company projects to find users and vendors who are double-booked in an overlapping window. Catches the resource collisions a single-project view hides. |
|
getAssignments |
Returns task assignments across every project in the company within an optional date range. Used for workload questions that aren't scoped to one job. |
|
getWeather |
Returns the forecast or historical weather for a project's address. Used for weather-dependent scheduling and for backfilling daily logs. |
To-dos & checklists
|
Tool |
What it does |
|
getTodoLists |
Returns a project's to-do lists, optionally filtered by ID or name search. |
|
getTodoItems |
Returns a project's to-do items filtered by status, assignee, ID, text search, or date range. |
|
getChecklistItems |
Returns the checklist items nested under a to-do item or a schedule task, with completion state. |
|
getTodoAssignableUsers |
Lists the people who can be assigned a to-do on a given project, with the reason each is eligible. Prevents Mason from assigning someone who lacks project access. |
Time tracking
|
Tool |
What it does |
|
getTimeEntries |
Lists time entries with worker, project, cost code, breaks, status, duration, and approval state. Filterable for timesheet review and payroll prep. |
|
getTimeEntry |
Returns one time entry in full, including break detail and approval history. |
Vendors & procurement
|
Tool |
What it does |
|
getVendors |
Lists your company's vendors with active state, contact counts, and certificate-of-insurance and compliance status. Quick way to spot expiring COIs. |
|
getVendor |
Returns full detail for a single vendor — profile fields, contacts, documents, and compliance state. |
|
getVendorContacts |
Returns active vendors that have contacts linked to a Ressio account, so Mason knows who can actually receive portal communications. |
|
listBills |
Lists bill summaries with vendor, project, purchase order, total, payment status, and sync state. |
|
getBill |
Returns one bill in full, including vendor, project, linked purchase order, totals, payment state, and line-item detail. |
Invoicing
|
Tool |
What it does |
|
getInvoices |
Returns invoice summaries for a project - 25 at a time, paging through the rest - with totals, payment state, and status. Void invoices are excluded unless requested. |
|
getInvoice |
Returns one invoice in full — metadata, totals, payment state, sections, and line items. |
|
getInvoiceableChanges |
Lists approved, uninvoiced changes on a project with their customer price deltas, plus any blockers preventing invoicing. Run this before createInvoiceFromChanges. |
|
getInvoiceableActuals |
Lists invoiceable actuals on a Cost Plus project with remaining amounts and blockers. Run this before createInvoiceFromActuals. |
|
getProgressInvoiceCandidates |
Lists fixed-price progress billing candidates with prior billed and remaining amounts. Run this before createProgressInvoice. |
|
getInvoiceSyncStatus |
Reports an invoice's accounting sync status and whether it's eligible to sync, without triggering a sync. |
Field documentation
|
Tool |
What it does |
|
getDailyLogs |
Returns daily log entries for a project, filterable by ID, text search, or date range. |
|
getDailyLogTemplate |
Returns your company's configured daily log template so new logs follow the same structure your team already uses. |
|
getMessages |
Lists project messages newest-first with author, thread target, and visibility. Shows what's been said to the customer versus kept internal. |
RFIs
|
Tool |
What it does |
|
listRfis |
Lists RFI records for the company, optionally filtered by project and status. |
|
getRfi |
Returns one RFI with its roster of assignees and recipients, question, responses, and current state. |
Files
|
Tool |
What it does |
|
listProjectFiles |
Lists a project's files with metadata, processing state, stable IDs, and safe access links. |
|
getProjectFile |
Returns metadata and safe access details for a single project file. |
Warranty
|
Tool |
What it does |
|
listWarrantyTasks |
Lists warranty task summaries with project, status, priority, assignee, and dates. |
|
getWarrantyTask |
Returns full detail for a single warranty task. |
Automations
|
Tool |
What it does |
|
listAutomations |
Lists the automations your company owns plus the catalog automations available to enable. |
|
getAutomation |
Returns one automation definition — its trigger, instructions, and enabled state. |
External research
|
Tool |
What it does |
|
webSearch |
Searches the web for supplier product info, specifications, code requirements, or standard punchlist language. Used when the answer isn't in your Ressio data. |
Write tools
Mason has the following tools available to help you create, change, or delete records.
‼️Every tool in this section will ask for your review and approval before taking action. Nothing is saved until you approve it.
Projects
|
Tool |
What it does |
|
createProject |
Creates a project from confirmed setup details. Name and stage are required; cost structure and budget mode are required from scratch or inherited from a template, and a duplicate customer name needs explicit confirmation. |
Estimating
|
Tool |
What it does |
|
createEstimateCategory |
Creates one top-level category in a project's Draft estimate. Refuses locked estimates. |
|
createEstimateCostItem |
Creates one cost item — manual or catalog-backed — under a top-level category in a Draft estimate. Catalog-owned values are applied automatically when a catalog item is used. |
|
updateCostItem |
Updates a cost item's name, description, notes, quantity, unit cost, cost code, cost type, or unit type. On locked estimates it only permits edits the current change-order state allows, and it refuses structural or lifecycle changes. |
|
buildEstimateFromScope |
Builds out an estimate's categories and cost items from an extracted or supplied scope list, matching against your Cost Catalog where possible. Typically paired with extractScopeFromDocument. |
|
applyEstimateTemplate |
Copies a template project's estimate structure into a target project's Draft estimate. Faster than rebuilding a standard scope by hand. |
|
addEstimatePlaceholders |
Adds placeholder rows to an estimate for scope that's known but not yet priced. Keeps identified gaps visible on the estimate instead of lost in notes. |
|
lockEstimate |
Locks a project's Draft estimate so future scope changes route through change orders. A one-way, high-consequence action that requires explicit confirmation. |
Change orders
|
Tool |
What it does |
|
createChangeOrderDraft |
Creates a change order draft from selected pending cost-item changes on a locked estimate. You review, edit, and release it separately. |
|
updateChangeOrder |
Updates a Draft change order's details — name, description, terms, due date, schedule impact, prepared-by, signature requirement — and adds or removes linked cost items. |
Selections
|
Tool |
What it does |
|
createSelection |
Converts an existing estimate cost item into a Draft selection with choice groups, choices, and cost details. The item keeps its name and position; no new estimate row is created. |
|
updateSelection |
Updates Draft selection metadata: name, description, instructions, due date, and linked schedule task. |
|
createSelectionChoiceGroup |
Creates a choice group under a Draft selection, optionally with up to five initial choices in the same write. Set min/max to define pick-one, optional add-on, or pick-all behavior. |
|
updateSelectionChoiceGroup |
Updates a Draft selection choice group's name and its min-required / max-allowed range. |
|
createSelectionChoice |
Creates a single choice under a Draft selection choice group, with up to ten cost details beneath it. |
|
updateSelectionChoice |
Updates a Draft selection choice's name, description, and cost details. Does not select or deselect choices, reorder them, or change selection status. |
|
updateSelectionStatus |
Moves a selection between Draft, Released, and Completed. Releasing is what makes it visible to the customer. |
Schedule
|
Tool |
What it does |
|
createScheduleTasks |
Creates one or more schedule tasks on a project, optionally with nested subtasks, dates, and assignments. |
|
updateScheduleTasks |
Updates one or more existing schedule tasks, including reparenting them under a different task. |
|
deleteScheduleTasks |
Deletes one or more schedule tasks from a project. |
|
createScheduleTaskDependencies |
Creates one or more dependencies between schedule tasks so downstream dates shift when predecessors move. |
|
deleteScheduleTaskDependencies |
Removes one or more dependencies between schedule tasks. |
|
createScheduleFromTemplate |
Builds a project schedule by copying the schedule tasks and dependencies from a template project. |
To-dos & checklists
|
Tool |
What it does |
|
createTodoList |
Creates one or more named to-do lists on a project. |
|
createTodoItem |
Creates one or more to-do items on a project, with assignee, due date, and list placement. |
|
updateTodoItem |
Updates one or more to-do items — name, description, assignee, due date, or completion status. |
|
createChecklistItem |
Creates one or more checklist items under a to-do item or a schedule task. |
|
updateChecklistItem |
Renames checklist items or toggles their completion state, one or many at a time. |
Time tracking
|
Tool |
What it does |
|
clockInTimeEntry |
Starts a running time entry for a worker on a project, optionally against a cost code. |
|
clockOutTimeEntry |
Stops a running time entry and finalizes its duration. |
|
createTimeEntry |
Creates one completed time entry after the fact, with optional cost code, description, and breaks. Used for backfilling missed clock-ins. |
|
updateTimeEntry |
Updates routine fields on one draft time entry using local wall-clock times. |
|
updateTimeEntryBreaks |
Replaces all breaks on one draft, completed time entry using local wall-clock break times. |
|
updateTimeEntryApprovalStatus |
Approves, reopens, or voids one time entry while preserving approval validation and break integrity. The payroll-facing action. |
Vendors
|
Tool |
What it does |
|
createVendor |
Creates a vendor. Name is required; email, phone, notes, and address are optional. |
|
updateVendor |
Updates a vendor's routine profile fields — name, email, phone, notes, and address. |
|
createVendorContact |
Adds a contact to a vendor with name, title, email, and phone. |
|
updateVendorContact |
Updates an existing vendor contact's details. |
|
createVendorDocument |
Creates a vendor document metadata record, such as a certificate of insurance or W-9, with type, expiration date, and reference number. |
|
updateVendorDocument |
Updates a vendor document's metadata — type, expiration date, reference number, and notes. |
|
addVendorFile |
Attaches an already-uploaded file to a vendor record as a contractor-internal vendor file. |
|
sendMessageToVendors |
Sends a message to one or more vendors on a project through the vendor portal. Used for coordination that should live on the project record rather than in email. |
Bid requests & purchase orders
|
Tool |
What it does |
|
createBidRequest |
Creates a bid request for a defined scope on a project, so multiple vendors can be invited to price the same work. |
|
updateBidRequestDetails |
Updates a bid request's details — name, scope description, instructions, and terms. |
|
updateBidRequestDueDate |
Changes the due date vendors have to submit their bids. |
|
updateBidRequestVendors |
Adds or removes the vendors invited to a bid request. |
|
releaseBidRequest |
Releases a bid request to its invited vendors, making it visible in the vendor portal and opening it for responses. |
|
convertBidRequestToPurchaseOrder |
Converts a chosen bid response into a purchase order, carrying the awarded scope and pricing across. |
|
createPurchaseOrder |
Creates a purchase order for a vendor on a project, tying committed cost to the budget. |
|
releasePurchaseOrder |
Releases a purchase order to the vendor for acknowledgment. |
Invoicing
|
Tool |
What it does |
|
createProgressInvoice |
Creates a draft progress invoice from selected fixed-price progress billing candidates. |
|
createInvoiceFromChanges |
Creates a draft invoice from selected approved, uninvoiced changes. |
|
createInvoiceFromActuals |
Creates a draft invoice from selected eligible actuals on a Cost Plus project. |
|
createInvoiceByAmount |
Creates a draft invoice from manually specified line item amounts, for billing that doesn't map to changes, actuals, or progress. |
|
attachFileToBill |
Attaches one already-uploaded file to a bill, moving an unattached company file onto the bill record. |
Field documentation
|
Tool |
What it does |
|
createDailyLog |
Creates a daily log entry for a specific date, following your company's daily log template. |
|
sendMessage |
Posts a message on a cost item in a project with a chosen visibility — Public, Private, Vendor, or Customer. |
RFIs
|
Tool |
What it does |
|
createRfi |
Creates a new RFI on a project in Draft state, with subject, question, assignees, and due date. |
|
updateRfi |
Updates a Draft RFI's editable fields — title, description, due date, subject, and roster. |
|
deleteRfi |
Soft-deletes a Draft RFI. Only Draft RFIs can be deleted. |
Files
|
Tool |
What it does |
|
associateProjectFile |
Links an existing company-level uploaded file to a project without copying it, so one file can serve multiple projects. |
Automations
|
Tool |
What it does |
|
createAutomation |
Creates and enables a company automation from its definition. |
|
updateAutomation |
Updates a company-owned automation's name, description, or instructions. |