MCP App Store
by KeenEthics

Overview

Northspyre is a development management platform for real estate teams, covering projects from acquisition through stabilization. This connector lets you work with your Northspyre data in conversation, using the same account and permissions you use in the Northspyre web app. What you can do: - Budgets and forecasting: review budgets and budget scenarios, the anticipated cost report, cost analytics and cash flow forecasts, and update budget lines. - Invoices and commitments: look up invoices, commitments and line items, and add or update them. - Draws: review draw requests, draw summaries and Draw Co-Pilot results, and record draw and invoice approvals. - Vendors: find vendors, review vendor analytics, and track lien waivers and certificates of insurance. - Procurement: create and manage bids and invite vendors to bid. - Project delivery: view and update project schedules and work with items in your Data Inbox. Example requests: - "What's the anticipated cost for my project, and which budget lines are over budget?" - "List unpaid invoices for this project and the vendors they're from." - "Which lien waivers are still missing for this month's draw?" How it works: - Sign in with your Northspyre account. Your organization's administrator turns on connector access, and each user's role controls what they can see and change, down to the project level. - Access can be read-only. Creating or changing records requires a role with write access. - Payments in Northspyre are records of payments made through your own accounting system. This connector does not move money. - Data from accounting systems such as Yardi, MRI, Sage Intacct and QuickBooks reaches the connector through your organization's existing Northspyre integration. Northspyre is SOC 2 Type II compliant, and data is encrypted in transit and at rest. A Northspyre subscription is required.

Tools

approve_draw

ChatGPT
Approve a draw request on behalf of the calling user. Only the project's most recent draw can be approved; naming an older one is refused. If the draw is not already fully approved, approving it moves it to under review. Use get_draw_copilot_readiness to check whether a draw is ready before approving it, and revoke_draw_approval to undo your approval.

batch_update_budget_lines

ChatGPT
Use for two or more budget line changes: creates (under an existing subcategory), updates and deletes run in order, and one failure rolls back all.

batch_update_budget_transactions

ChatGPT
Use for two or more budget transaction changes: creates (Original Budget, Approved or Pending Budget Change on a budget line), updates and deletes run in order, and one failure rolls back all.

batch_update_schedule

ChatGPT
Apply several schedule changes in one request: create, update and delete tasks and milestones. The batch is atomic, so if any operation fails none are applied. Deletes also remove every task nested under the deleted one.

create_approval_workflow

ChatGPT
Create a named approval workflow on a project. WorkflowType picks what it approves (0 invoice, 1 commitment, 5 document, 6 budget, 7 requisition) and Workflow lists its approval stages in order. Fails if a workflow with the same name already exists on the project.

create_bid_package

ChatGPT
Create a bid package (RFP) on a project. The data field is a JSON string with Title and BudgetLine (required) and optionally ContractType, BidRounds, SquareFootage, Description, Deadline, BidManagerIds, MilestoneIds and ProposalForm. File attachments are not supported over MCP (1 MiB request limit); create the record without attachments and add files in the web app.

create_budget_line

ChatGPT
Add a top category, subcategory or budget line to the project's budget structure. Subcategories and budget lines need the ParentId of the node they sit under. For two or more budget line changes, use batch_update_budget_lines.

create_budget_scenario

ChatGPT
Create a new budget scenario on a project that is in early-planning mode. Two dispatch modes: create a blank scenario (Name + GrossSquareFootage) or clone an existing scenario at a percentage of its budget amounts (Name + GrossSquareFootage + SourceScenarioId + Percentage). Features - Two creation modes — blank scenario or copy-from-existing with configurable percentage scaling (via SourceScenarioId + optional Percentage). - Auto-status downgrade — if the project already has a FINAL scenario, the new scenario is created as REJECTED (single approved scenario invariant). - Cross-project source protection — SourceScenarioId from another project returns 404, not 403, so cross-project id enumeration is neutralized. Warnings / Limits - Early-planning only — the target project's early_planning flag must be true, else the endpoint returns 409. Enable early-planning on the project first in the Northspyre app. - Name uniqueness — scenario names must be unique within a project; collision returns 400. - Copy-mode responses can be large — cloning from a source scenario with many budget transactions returns all of them in Transactions. Blank-mode responses have an empty array. See also - update_budget_scenario to update Name or GrossSquareFootage. - delete_budget_scenario to remove a non-FINAL scenario. - get_budget_scenarios to list scenarios in a project.

create_budget_transaction

ChatGPT
Create an Original Budget transaction and link it to a budget scenario. This endpoint creates Original Budget transactions ONLY — not reallocations or other transaction types. Features - Auto-sequenced — transaction number and requisition period are assigned automatically - Scenario-linked — the transaction is paired to the scenario_id in the path Warnings / Limits - 400 when BudgetLineName doesn't match a budget line on the project, or when the project's original budget is locked - 404 when the scenario doesn't exist or belongs to another project See also - get_budget_categorization to discover valid budget line names - For two or more budget transaction changes, use batch_update_budget_transactions.

create_coi

ChatGPT
Record a certificate of insurance (COI) for a vendor on a project, with one or more coverage components (insurer, policy number, coverage type, limits, effective and expiration dates).

create_commitment_line_item

ChatGPT
Add a line item to a commitment, or start a new commitment by omitting CommitmentId. Requires the budget line nickname, final amount, title, description and the requisition period (RequisitionId from list_requisitions) it belongs to. Type defaults to Base Contract (or the existing commitment's type); Stage is Staged or Approved.

create_external_cost_codes

ChatGPT
Store custom accounting cost codes for a project. The body maps each cost code type (any name) to a list of codes, each with a required name and any other fields. Fails if the project already has external cost codes; use update_external_cost_codes to replace them.

create_external_vendor

ChatGPT
Store a vendor from an external accounting system on a project. If a vendor with the same details already exists it is returned instead of creating a duplicate.

create_invoice

ChatGPT
Record a vendor invoice on a project, with at least one line item. Each line item needs an amount and a budget line nickname. If TotalAmount is sent it must equal the sum of the line items. The invoice number must be unique for the vendor. This records the invoice in Northspyre; it does not pay it.

create_invoice_line_item

ChatGPT
Add a line item to an existing invoice. Requires the amount and the budget line nickname; optionally set the vendor, description and stage (Staged or Approved).

create_lien_waiver

ChatGPT
Create a lien waiver for a vendor on a project, optionally from a waiver template, with its type, progress and signed and notarized status.

create_pay_period

ChatGPT
Open a new pay period on a payment tracker, optionally with the date it opens.

create_payment

ChatGPT
Record a payment that was already made outside Northspyre (for example in the organization's accounting system) against an invoice. Requires the invoice id, amount and check number. This only records the payment in Northspyre; it does not move money.

create_payment_tracker

ChatGPT
Create a construction payment tracker for a general contractor on a project. Requires a name, the budget line node it tracks and the project vendor id of the contractor; optionally set the default retainage percent and G702 options.

create_requisition_period

ChatGPT
Add a requisition period (draw period) to a project. InsertionType says whether it goes at the beginning, middle or end of the existing periods and Order gives its position; optionally set its end date.

create_schedule_task

ChatGPT
Add a task or milestone to the project schedule. Only Name is required; optionally set its parent, dates, duration, completion, constraint, predecessors and assignees.

create_vendor

ChatGPT
Add an existing organization vendor to a project, identified by GlobalVendorId. Optionally set its project-specific details such as role, budget line and lien waiver requirement.

delete_approval_workflow

ChatGPT
Archive an approval workflow so it is no longer used for new items on the project. Find workflow ids with list_approval_workflows.

delete_budget_line

ChatGPT
Delete a budget classification node — a leaf budget line, a subcategory, or a top_category — from a project. Features - All three node types — the node type is resolved from its position in the budget hierarchy; no Type field is required - Cascade — deleting a subcategory or top_category also removes its empty child lines - A leaf delete also cleans up the line's scenario linkages, cost-code links, and schedule-task pairings Warnings / Limits - Blocked (400) when the target leaf line has budget transactions, a request-for-proposal association, or an active construction scope of work - Deleting a subcategory or top_category removes its empty descendant lines and is blocked (400) if any descendant line has budget transactions, a request-for-proposal association, or an active construction scope of work - A deleted line is gone: a follow-up GET returns 404 See also - update_budget_categorization to rename or re-categorize instead of deleting

delete_budget_scenario

ChatGPT
Delete a budget scenario and its scenario-scoped budget transactions from a project. This operation is irreversible — there is no soft-delete or trash-bin. Shared budget transactions (attached to other scenarios OR marked global) are preserved. Features - Cascade of non-shared budgets — budget transactions unique to the deleted scenario are removed with it. - Shared / global preservation — budget transactions shared with other scenarios or marked global are kept. Warnings / Limits - FINAL scenarios cannot be deleted — approved scenarios return 400. Revert the scenario in the Northspyre app first. - REJECTED scenarios are deletable — only FINAL blocks delete; other statuses are removable. - Last-in-project blocked (early-planning projects only) — on early-planning projects the ONLY remaining scenario cannot be deleted, because the project's cash flow view needs at least one scenario. Non-early-planning projects are not subject to this guard and can drain their scenarios cleanly. On an early-planning project, create a replacement scenario first, then delete the original. - No confirmation prompt — this endpoint is destructive and synchronous. Callers should confirm with the end user before invoking. See also - update_budget_scenario to update fields instead of deleting.

delete_budget_transaction

ChatGPT
Delete a single budget transaction by id. Scenario linkages, attachment links, and any approval-workflow instance are cleaned up as part of the delete. Warnings / Limits - Deletes only the single record, even if it was created across multiple scenarios - 400 when a guard rejects the delete — a reallocation type, a locked requisition period, an exported-to-accounting transaction, or a FINAL (approved) scenario - 404 when the transaction doesn't exist or belongs to another project See also - For two or more budget transaction changes, use batch_update_budget_transactions.

delete_coi

ChatGPT
Delete a certificate of insurance (COI) from a project.

delete_commitment_line_item

ChatGPT
Delete a commitment line item. Approved line items cannot be deleted.

delete_external_cost_codes

ChatGPT
Delete all of a project's custom accounting cost codes.

delete_external_vendor

ChatGPT
Delete an external accounting system vendor from a project. Find ids with list_external_vendors.

delete_invoice

ChatGPT
Delete an invoice and its line items from a project.

delete_invoice_line_item

ChatGPT
Delete a line item from an invoice. Only line items that are not yet approved can be deleted.

delete_lien_waiver

ChatGPT
Delete a lien waiver from a project. The waiver is marked deleted rather than erased.

delete_project_metadata

ChatGPT
Deletes project metadata for the specified key. Returns 204 No Content on success, 404 if the metadata key was not found.

delete_schedule_task

ChatGPT
Delete a task or milestone from the project schedule, together with every task nested under it.

get_anticipated_cost_report

ChatGPT
Generate an Anticipated Cost Report (ACR) for a specific subproject. The ACR provides comprehensive cost tracking including: - Hierarchical budget categories with high-level categories, subcategories, and budget lines - Budget line details with actual costs, commitments, and exposures - Grand totals and contingency calculations - Cost per unit metrics (square foot, acre, residential unit, etc.) - Allowances and budget reallocations - Vendor associations for each budget line Parameters: - subproject_id: The ID of the subproject to generate the report for - include_pending_transactions: Include transactions that are pending approval (default: False) - include_unused_budget_lines: Include budget lines with no activity (default: True) - draw_tree_id / draw_tree_name: Group the report against one of the project's configurable draw trees instead of the original budget structure. Mutually exclusive. Grouping by a draw tree requires the Complex Capital Management add-on, so these parameters return 403 for organizations without it; the report itself is unaffected when both are omitted. Returns: A comprehensive ACR report with hierarchical budget categories, all totals, and metrics. Response Structure: - budget_categories: Hierarchical tree of high-level → subcategory → budget lines - all_budget_line_totals: Flattened list of all budget line totals - grand_total: Overall project financial summary - grand_total_offset_by_remaining_contingencies: Grand total adjusted for contingencies - contingencies: Contingency budget lines and totals - allowances: Allowance budget lines and totals - unit_type_amounts: Unit quantities for cost per unit calculations - is_paid_to_date_accurate: Whether paid_to_date data is from accounting integration - total_partial_payments: Sum of partial payments not yet fully invoiced

get_bid

ChatGPT
Get one bid with full context from its bid package (RFP): proposal form, qualifying questions, discussion, invited vendors and every other submitted bid.

get_bid_submission

ChatGPT
Get a vendor's submitted proposal for one bid round: the proposal form with the vendor's values, bid amount, notes, attachment download links and submission time.

get_budget_categorization

ChatGPT
Get the project's budget structure as a tree: top categories, subcategories and budget lines, with each line's nickname, Northspyre cost category and allowance flag. Budget line nicknames are what other tools take as BudgetLine. Optionally filter by created or updated date.

get_budget_scenarios

ChatGPT
List the project's budget scenarios (early-planning budget versions) with the budget transactions in each one.

get_budgets

ChatGPT
List every budget transaction on a project: original budget amounts, approved changes and reallocations, each with its budget line, amount, title, scenario and approval details.

get_cash_flow_report

ChatGPT
Returns comprehensive cash flow data including chart periods with spending/funding/projected amounts, hierarchical budget line table data, optional LIHTC metrics, funding source periods, and traunch ending markers. Supports filtering by forecast metric, period granularity, LIHTC mode, scenario (for early planning projects), and specific budget line IDs. For a general chart or overview, use Yearly periods: a multi-year project's month-by-month data is too large to read as a chart. Use a finer period only when month-level detail or a short, recent window is asked for. When you show Yearly by default, say in one short sentence that the full detail is on the project's Cash Flow page.

get_coi

ChatGPT
Get one certificate of insurance (COI) with its insured vendor, producer, coverages, limits and expiration dates.

get_commitment

ChatGPT
Get one commitment with all its line items, total amount, vendor, approval date and backup documentation links. Find commitment ids with list_commitments.

get_commitment_line_item

ChatGPT
Get one commitment line item: its commitment, type, budget line, stage, vendor, estimate, proposed and final amounts, live exposure and requisition period.

get_commitment_report

ChatGPT
Get the commitment and potential cost report for one project (subproject): committed amounts and potential exposures by budget category and subcategory, total potential costs and the project contingency. Pass the project id as subproject_id.

get_cost_analytics

ChatGPT
Get portfolio cost analytics for one budget line across all projects you can access. Use this rather than list_cost_analytics for a question about one or a few budget lines: the list covers every budget line in the portfolio, far more data than such a question needs. Use a BudgetLineId from list_cost_analytics.

get_data_inbox_item

ChatGPT
Get the full detail of one data inbox item: a document (invoice, commitment, insurance certificate, lien waiver and so on) received by email or upload. Includes its stage, project, vendor, extracted line items, AI analysis, comments and approval workflow activity. Find item ids with list_inbox.

get_draw_budget_line_table

ChatGPT
Get the draw request budget line table for a draw: the budget tree (high levels, categories and budget lines) and the allowances, each with its original and revised budget, commitments, retainage, percent complete and current due. Omit draw_id for the project's most recent draw. It covers the whole budget, so the response can be large. To compute the table against a draw tree or with alternate budget line nicknames, use get_draw_request_budget_lines instead, which requires the draw id. A project whose draws are missing order numbers or share one is refused with a message naming the draws to fix in the app.

get_draw_copilot_readiness

ChatGPT
Check whether a draw request is ready to submit to a lender, as Draw Copilot does in the Northspyre app. Returns one consolidated readiness report for a single draw: budget lines drawn past their revised budget, invoices in the draw with no supporting attachment, vendors invoiced beyond their contract, vendors with invoices missing a lien waiver, vendors with unmet insurance requirements, and the funding position across the project's sources. `ChecklistItems summarises the six checks: Details is a count for five of them and the shortfall amount for insufficient_funds. The five arrays carry the rows behind the counts and are empty when there is nothing to fix; the sixth check is the InsufficientFunds object. Omit draw_id to analyse the most recent draw. InsufficientFunds.InsufficientFunds is positive when the draw exceeds what the sources have left and zero or negative when the sources cover it. Rows can be listed without being counted: findings a user has dismissed in the app, and invoices whose IsAttachmentRequired is false. A project with an active draw whose order number is missing, zero, negative or not a finite number, or a draw that shares its order number with another draw, is refused with a message naming the draws and the fix to make in the app. Use get_draw_request_budget_lines` for the draw's budget line detail rather than this endpoint.

get_draw_key_transactions

ChatGPT
Get what happened on a draw: the vendors funded with their amounts and shares, the commitments added and the budget adjustments, largest first. Omit draw_id for the project's most recent draw. A project whose draws are missing order numbers or share one is refused with a message naming the draws to fix in the app.

get_draw_quick_stats

ChatGPT
Get a draw's headline totals (invoiced, hard costs, change orders and original budget change) and each total's percent change from the previous draw, the draw numbered one less. Percent changes are percent points: 12.5 means 12.5 %. Omit draw_id for the project's most recent draw. A project whose draws are missing order numbers or share one is refused with a message naming the draws to fix in the app.

get_draw_request_budget_lines

ChatGPT
Get the budget line table for one draw request: the budget hierarchy (categories, subcategories and budget lines) with each line's budget and draw amounts. Pass the project id as subproject_id and the draw's requisition_id from list_requisitions. Optionally compute it against a budget scenario or a draw tree from list_draw_trees.

get_draw_sources_summary

ChatGPT
Get how much each funding source (equity, loans and other sources) contributes to a draw: the amount drawn this period, in earlier periods and to date, and the percent contributed, with project totals. Omit draw_id for the project's most recent draw. A project whose draws are missing order numbers or share one is refused with a message naming the draws to fix in the app.

get_draw_sworn_statement

ChatGPT
Get the owner's sworn statement for a draw: budget lines grouped by category and high level, each with its original budget, changes, committed, invoiced, current due, previously paid, percent complete and balance remaining, and its vendors with whether a lien waiver is required, plus grand totals. Omit draw_id for the project's most recent draw. It covers the whole budget, so the response can be large. A project whose draws are missing order numbers or share one is refused with a message naming the draws to fix in the app.

get_invoice

ChatGPT
Get one invoice with its line items, total, vendor, stage, payment status, approval date and backup documentation links.

get_lien_waiver

ChatGPT
Get one lien waiver with its vendor, signed and notarized status, template, type and progress.

get_material_tariff_rate

ChatGPT
Current US import tariff rate for a named building material (for example steel, aluminum, copper, softwood_lumber) and the most recent recorded change to that rate. Use this, not get_tariff_data, when the user names a material rather than an HS code. Rates are in percent and combine the base duty with any Section 232 / 301 overlay; rate CHANGES are in percentage points (pp). country_of_origin is optional and ISO 3166-1 alpha-2; omit it for the rate that applies to most origins. Returns the budget lines the material maps to, so the answer can name which parts of a budget are affected. Rates are indicative at material granularity, not customs classifications. Returns status=no_data when the requested material is not in the catalog, including when the published schedule can no longer be resolved into a rate. Data may be served from a shared cache: overlay rates up to 6 hours old and base duties up to 24 hours old, so cite the returned fetched_at and source_url, never the current time. This tool returns rate data only; it does NOT compute dollar exposure.

get_mri_cost_codes

ChatGPT
Get the MRI cost codes mapped to each budget line on a project. Only works for projects connected to MRI.

get_nexus_cost_codes

ChatGPT
Get the Nexus cost codes mapped to each budget line on a project. Only works for projects connected to Nexus.

get_past_draws_summary

ChatGPT
Get the past draws summary: the current due of every draw up to and including this one, by budget line, category and high level, keyed by draw number, with the project's draws, the budget tree with its vendors, allowances and totals. Omit draw_id for the project's most recent draw. It covers every draw and the whole budget, so the response can be large. A project whose draws are missing order numbers or share one is refused with a message naming the draws to fix in the app.

get_payment

ChatGPT
Get one recorded payment: the invoice it pays, amount, check number, external payment id and dates.

get_payment_tracker

ChatGPT
Get one payment tracker with its scopes of work (G703 schedule of values) and grand totals for a pay period. Defaults to the latest pay period; pass pay_period_id for another one.

get_portfolio_approval

ChatGPT
Get one item from the approvals queue with its approval status and workflow progress. Pass its type, and project_id for budget transactions.

get_project

ChatGPT
Get one project (subproject): its development project, address, asset type, dates, constructed area, approved budget, amount invoiced to date, custom metadata and your access level.

get_project_information

ChatGPT
Get the inbound email addresses for projects. Each project has its own addresses for forwarding invoices, commitments, insurance certificates, lien waivers and other documents into Northspyre. Pass subproject_id for one project; omit it to get every project you can access.

get_quickbooks_desktop_cost_codes

ChatGPT
Get the QuickBooks Desktop cost codes mapped to each budget line on a project. Only works for projects connected to QuickBooks Desktop.

get_quickbooks_online_cost_codes

ChatGPT
Get the QuickBooks Online cost codes mapped to each budget line on a project. Only works for projects connected to QuickBooks Online.

get_realpage_cost_codes

ChatGPT
Get the RealPage cost codes mapped to each budget line on a project. Only works for projects connected to RealPage.

get_sage_300_cost_codes

ChatGPT
Get the Sage 300 cost codes mapped to each budget line on a project. Only works for projects connected to Sage 300.

get_sage_intacct_cost_codes

ChatGPT
Get the Sage Intacct cost codes mapped to each budget line on a project. Only works for projects connected to Sage Intacct.

get_schedule

ChatGPT
Get the project schedule: every task and milestone as a tree, with dates, baseline dates, completion percentage, linked budget line, predecessors and assignees.

get_source_draw_summary

ChatGPT
Get the source draw summary for one project (subproject): for each draw and funding source, the amount drawn previously and this period, total funded to date, balance remaining and percent contributed. Pass the project id as subproject_id.

get_synced_email_body

ChatGPT
Return part of one synced email's body, starting at a character offset, up to 10,000 characters per call. Use it to read past the truncated body from list_synced_emails, or to jump to a body_excerpts offset. Keep calling with next_offset until it is absent to read the whole body.

get_tariff_data

ChatGPT
Current US import tariff rate and the most recent rate change for an HS code + country of origin (ISO 3166-1 alpha-2). Rates are in percent; rate CHANGES are in percentage points (pp), not percent. Data may be served from a shared cache: overlay rates up to 6 hours old and base duties up to 24 hours old, so cite the returned fetched_at / last_change_date, never the current time. Returns status=no_data when the source has no record for the pair. This tool returns public rate data only; it does NOT compute dollar exposure for a commitment — exposure figures must come from an existing signal observation, not from arithmetic on this result.

get_vendor

ChatGPT
Get one vendor on a project with its contacts, address, budget line, business designations and lien waiver and insurance requirements.

get_vendor_analytics

ChatGPT
Get key statistics for one vendor across the portfolio: approved contract, invoiced, balance remaining, projected contract, overrun, percent complete and cost per square foot or unit. Use the vendor's GlobalVendorId.

get_weather_forecast

ChatGPT
Multi-day weather forecast for a NorthSpyre project's location: daily high/low temperatures in FAHRENHEIT, the condition for each day, current conditions, and any active severe-weather alerts. Data may be served from a shared cache up to 1 hour old - cite the returned fetched_at, never the current time. Returns status=no_data when the project has no resolvable location or the provider returned no forecast. This tool returns public forecast data only; it does NOT assess which scheduled work is at risk - that assessment must come from an existing signal observation.

get_yardi_cost_codes

ChatGPT
Get the Yardi cost codes mapped to each budget line on a project. Only works for projects connected to Yardi.

invite_vendor_to_bid

ChatGPT
Invite a vendor to an existing bid package (RFP), identified by bid_id, the id of any vendor bid submitted to it (from list_bids or get_bid). Northspyre emails the invitation to the vendor. Send UserEmail to invite a specific contact, HelpFindContact=true to have Northspyre find a contact, or both.

list_approval_workflows

ChatGPT
List the active approval workflows on a project, paginated. Each workflow has a name, a type (invoice, commitment, document, budget or requisition) and its ordered approval stages.

list_bids

ChatGPT
List submitted bids on the project's bid packages (RFPs), paginated, with vendor, amount, status and the RFP's title, deadline and bid managers. Filter by budget line or bid manager email.

list_budget_lines

ChatGPT
List the project's budget lines with their category, allowance flag and the accounting cost codes mapped to each line. Optionally filter by created or updated date.

list_cois

ChatGPT
List the project's certificates of insurance (COIs), paginated, with the insured vendor, producer, coverages, limits and expiration dates.

list_commitments

ChatGPT
List the project's commitments (contracts with vendors), paginated. Each commitment groups its line items: base contract, change orders, estimates and proposed costs. Filter by stage, type, vendor, budget line, requisition or date, and sort by title, vendor, amount or type.

list_cost_analytics

ChatGPT
Get portfolio cost analytics for every budget line across all projects you can access: budget, commitments, invoiced, remaining and cost per square foot or unit, per project and in total.

list_draw_approvals

ChatGPT
List the approvals recorded on a draw's approval workflow, oldest first, with each approver's name and email and when they approved. Empty when the draw has no approval workflow. Omit draw_id for the project's most recent draw. If a draw on the project is missing its order number, name the draw with draw_id: this report is computed from the draw id alone.

list_draw_disbursements

ChatGPT
List who is paid on a draw: each vendor with approved invoices on it, the vendor's mailing address, the name checks are payable to and the amount due, ordered by company name. Omit draw_id for the project's most recent draw. If a draw on the project is missing its order number, name the draw with draw_id: this report is computed from the draw id alone.

list_draw_trees

ChatGPT
List the draw structures available for a project's reports. The first entry is the project's original budget structure. It is the default, and it is not a stored tree: its `Id is null and neither its Id nor its Name can be passed to a report. To compute against it, omit both report parameters. Every OTHER entry is a stored draw tree, and its Id and Name are both accepted by the draw_tree_id / draw_tree_name parameters on get_draw_request_budget_lines and get_anticipated_cost_report. Names are matched case-insensitively, so if this list shows two trees whose names differ only in case, pass either name exactly as shown, or use Id`.

list_external_cost_codes

ChatGPT
Get the custom accounting cost codes stored for a project, keyed by cost code type. These are for accounting systems without a built-in Northspyre integration.

list_external_vendors

ChatGPT
List the vendors from an external accounting system that are stored for a project, with vendor code, contact name, address and the Northspyre vendor they map to.

list_inbox

ChatGPT
List the project's data inbox, paginated: documents (invoices, commitments, insurance certificates, lien waivers and so on) received by email or upload, with stage, vendor, amount, subject and sender. Filter by stage.

list_invoice_payments

ChatGPT
List the payments recorded against one invoice: amount, check number, external payment id and dates.

list_invoices

ChatGPT
List the project's invoices with their line items, amounts, vendor, stage, payment status and backup documentation links. Filter by invoice number, stage, payment status or created/updated date.

list_lien_waivers

ChatGPT
List the project's lien waivers, paginated, with vendor, signed and notarized status, type and progress.

list_payment_trackers

ChatGPT
List the project's construction payment trackers, paginated. A payment tracker follows one general contractor's contract on a budget line through its pay periods (AIA G702/G703 style).

list_payments

ChatGPT
List the payments recorded on a project's invoices. Optionally filter by the payment's id in the accounting system (external_id).

list_portfolio_approvals

ChatGPT
List the approvals in your queue across all projects, paginated: data inbox items, budget transactions and draw requests. By default it returns items waiting on your approval; filter by type, project or items waiting on others.

list_project_ids

ChatGPT
List the ids of every project (subproject) you can access in the organization. Use list_projects or search_projects when you also need names and details.

list_projects

ChatGPT
List the projects (subprojects) you can access, with each one's development project, address, asset type, dates, constructed area, approved budget, amount invoiced to date, custom metadata and your access level.

list_recall_transcripts

ChatGPT
List the meeting transcripts stored in the organization: transcripts of meetings recorded with Northspyre's meeting recorder (powered by Recall.ai). Each transcript includes the meeting title, platform, start and end times, participant names and the full transcript text. This does not read your conversation with the assistant.

list_requisitions

ChatGPT
List the project's requisition periods (draws) in order, with each one's name, status and end date. Requisition ids are the draw ids other tools take.

list_synced_emails

ChatGPT
List emails synced into Northspyre from users' connected mailboxes, newest first (most relevant first when searching), with subject, sender, recipients, body and the projects each email is linked to. Always narrow the request to a project plus a search term, sender, or date range rather than listing everything. Returns 25 emails per page by default (at most 50). Bodies longer than 4,000 characters are truncated and report body_total_chars; when searching, passages that match past the cut are returned in body_excerpts. Read the rest of a body with get_synced_email_body. Users limited to specific projects only see emails linked to those projects.

list_users

ChatGPT
List users in the organization by name and email, paginated. Pass project_id to list only users on that project, or search to filter by name.

list_vendor_analytics

ChatGPT
Get key vendor statistics across all vendors in the portfolio: approved contract, invoiced, balance remaining, projected contract, overrun, percent complete and cost per square foot or unit.

list_vendors

ChatGPT
List the vendors on a project, paginated: name, role, contacts, address, budget line, minority- and women-owned business designations, lien waiver and insurance requirements.

revoke_draw_approval

ChatGPT
Revoke the approval the calling user recorded on a draw request. Removes only your own approval; other users' approvals cannot be revoked. Only the project's most recent draw can be changed. The draw stays under review after the approval is removed, as it does in the app. The response is the removed approval as it stood just before deletion, so its `Id` no longer resolves.

search_projects

ChatGPT
Find a project (subproject) by name, or by its development project name. Each subproject belongs to one development project, and a development project can have many subprojects. The query is matched against both subproject names and development-project names using a 3-tier search (exact -> prefix -> contains); the first tier with any hit wins. Returns an envelope with: - selected_project: the resolved project when exactly one matched (including a development project that has a single subproject). Pass its project_id to other tools. - requires_selection: true when multiple subprojects matched. Present candidates to the user and ask which subproject to query against. - candidates: every matching subproject, each annotated with match_type and matched_via ("subproject_name" or "development_project_name").

set_project_metadata

ChatGPT
Sets or updates project metadata for the specified key. If the key doesn't exist, it will be created.

update_approval_workflow

ChatGPT
Rename an approval workflow or replace its approval stages. Send only the fields to change. Find workflow ids with list_approval_workflows.

update_bid_package

ChatGPT
Change a bid package (RFP). The package is identified by bid_id, the id of any vendor bid submitted to it (from list_bids or get_bid), so a package with no submitted bids yet is edited in the Northspyre app. The data field is a JSON string with only the fields to change. File attachments are not supported over MCP (1 MiB request limit); create the record without attachments and add files in the web app.

update_budget_categorization

ChatGPT
Update a single leaf-level budget line's project nickname, its system cost-category mapping, and its allowance flag. Features - Nickname rename — renaming propagates to every existing transaction that references the line (the nickname is the transaction foreign key) - System category — remap to a valid NorthSpyre cost category - Allowance flag — mark the line as an allowance item Warnings / Limits - Returns a single leaf node (LineItems is always empty), unlike get_budget_categorization which returns the full tree - 400 on a duplicate nickname or budget-categorization editing being disabled for the project; 404 on an unknown system category or a budget_line_id that isn't a leaf in this project See also - get_budget_categorization to discover budget lines and their current values

update_budget_line

ChatGPT
Rename or reconfigure a top category, subcategory or budget line in the project's budget structure (name, nickname, cost category, allowance and basis-eligible flags). Send only the fields to change. For two or more budget line changes, use batch_update_budget_lines.

update_budget_scenario

ChatGPT
Update the Name and/or GrossSquareFootage of a budget scenario. At least one of the two fields must be present in the body. Approving or reverting a scenario is done in the Northspyre app. Features - Partial updates — send only the fields you want to change; omitted fields are left untouched. - Falsy-input rejection — empty-string Name and zero GrossSquareFootage return 400 rather than being silently ignored. - Cross-project protection — updating a scenario_id from another project returns 404, same shape as not-found. Warnings / Limits - FINAL scenarios are read-only — approved scenarios return 400. Revert the scenario in the Northspyre app before updating. - Name uniqueness — renaming to a name that already exists in the project returns 400. See also - create_budget_scenario to create a scenario. - delete_budget_scenario to remove a scenario.

update_budget_transaction

ChatGPT
Update an existing budget transaction's amount, budget-line assignment, title, or description. Features - Partial update — send only the fields you want to change (at least one is required) - Re-categorize — move the transaction to a different budget line by name Warnings / Limits - 400 on an empty body or an unknown BudgetLineName; edits may be blocked by approval workflows or a locked requisition period - 404 when the transaction doesn't exist or belongs to another project See also - For two or more budget transaction changes, use batch_update_budget_transactions.

update_cash_flow_budget_line

ChatGPT
Updates a budget line's cash flow projection settings (start date, end date, curve type and projection variable) and its pinned values. Partial update: fields absent from the body are left unchanged. StartDate, EndDate, ProjectionType and ProjectionVariable accept null to clear the value; a ProjectionType sent without ProjectionVariable clears the variable, so the report applies the new curve's default. Changing the curve also turns off the budget line's 'equalize monthly projections' mode, which the cash flow report publishes and this endpoint neither accepts nor returns. PinnedValues replaces every pin on the budget line; send [] to clear them. Each pin must cover exactly one calendar month, one semi-month (1st-15th or 16th-end) or one calendar quarter, all pins in one request must use the same period type, and pins must not overlap. Every pin must overlap the budget line's projection window: its StartDate to EndDate as updated by this request, intersected with the project timeline. A missing StartDate falls back to the project start; a StartDate before the project start is refused, not moved. The window end is capped by the project timeline - the project end date, or five years from the project start when it has none, as the report does - and a supplied EndDate past the project end is refused rather than capped, so the cap bites on a stored end date or an open-ended project. A pin that only partly overlaps the window is accepted, because the report clamps the edge periods the same way. A pin cannot land on a period that is already actualized, or on a budget line whose EndDate has passed. Shrinking the window while stored pins would fall outside it is refused unless PinnedValues is sent in the same request; a stored pin whose dates cannot be read is not covered by that refusal. Interest reserve and Advanced Developer Fee budget lines accept date changes and a pin clear only. The response carries the persisted projection settings. Its PinnedValues are the pins this request wrote, echoed rather than re-read; when the request sends no PinnedValues they are read back from storage. A stored pin the endpoint cannot read is omitted from the response.

update_coi

ChatGPT
Change a certificate of insurance (COI): its details, existing coverage components (UpdatedComponents) or new ones (NewComponents). Send only the fields to change.

update_commitment_line_item

ChatGPT
Change a commitment line item's description, budget line, amount, title, vendor, requisition period or stage. Send only the fields to change; omitted fields are left unchanged. Approved line items in a locked requisition period cannot be changed.

update_external_cost_codes

ChatGPT
Replace all of a project's custom accounting cost codes with the ones sent, creating them if none exist. Cost codes not included in the body are removed.

update_inbox_item

ChatGPT
Approve or reject a data inbox item as the calling user, optionally with notes. Approving may post the underlying record (for example the invoice); the response says whether it posted.

update_invoice

ChatGPT
Change an invoice's payment status, invoice date or description. Other invoice fields are changed through its line items.

update_invoice_line_item

ChatGPT
Change an invoice line item's amount, budget line, vendor, description or stage. Send only the fields to change; omitted fields are left unchanged.

update_lien_waiver

ChatGPT
Change a lien waiver's vendor, stage, signed or notarized status, template, type or progress. Send only the fields to change.

update_payment

ChatGPT
Correct a recorded payment's invoice, amount, check number or external payment id. InvoiceId, PaymentAmount and CheckNo are required. This changes the record only; it does not move money.

update_payment_tracker

ChatGPT
Change a payment tracker's name, budget line, contractor, default retainage or invoice and G702 options. Send only the fields to change.

update_portfolio_approval

ChatGPT
Approve or reject an item in your approvals queue as the calling user, optionally with a comment. Rejecting a data inbox item requires a comment.

update_requisition_period

ChatGPT
Replace a requisition period's name, status, end date and approval workflow. Fields left out are cleared, so send the current values of anything that should not change.

update_schedule_task

ChatGPT
Change a schedule task or milestone. Send only the fields to change.

update_vendor

ChatGPT
Change a project vendor's name, role, contact email, address, vendor code, budget line, business designations or lien waiver and insurance settings. Send only the fields to change.

whoami

ChatGPT
Describe the current MCP session: who you are, which organizations you may use over MCP and with what access (ro/rw), which one is selected, the token's scopes, whether writes are possible, and -- when tools are being refused -- the denial code explaining why.

batch_update_schedule

Claude

create_approval_workflow

Claude

create_bid

Claude

create_budget_line

Claude

create_budget_scenario

Claude

create_budget_transaction

Claude

create_coi

Claude

create_commitment_line_item

Claude

create_external_cost_codes

Claude

create_external_vendor

Claude

create_invoice

Claude

create_invoice_line_item

Claude

create_lien_waiver

Claude

create_pay_period

Claude

create_payment

Claude

create_payment_tracker

Claude

create_requisition_period

Claude

create_schedule_task

Claude

create_vendor

Claude

delete_approval_workflow

Claude

delete_budget_line

Claude

delete_budget_scenario

Claude

delete_budget_transaction

Claude

delete_coi

Claude

delete_commitment_line_item

Claude

delete_external_cost_codes

Claude

delete_external_vendor

Claude

delete_invoice

Claude

delete_invoice_line_item

Claude

delete_lien_waiver

Claude

delete_project_metadata

Claude

delete_schedule_task

Claude

get_anticipated_cost_report

Claude

get_bid

Claude

get_bid_submission

Claude

get_budget_categorization

Claude

get_budget_scenarios

Claude

get_budgets

Claude

get_cash_flow_report

Claude

get_coi

Claude

get_commitment

Claude

get_commitment_line_item

Claude

get_commitment_report

Claude

get_cost_analytics

Claude

get_data_inbox_item

Claude

get_draw_copilot

Claude

get_draw_export

Claude

get_draw_request_budget_lines

Claude

get_invoice

Claude

get_lien_waiver

Claude

get_material_tariff_rate

Claude

get_mri_cost_codes

Claude

get_nexus_cost_codes

Claude

get_payment

Claude

get_payment_tracker

Claude

get_portfolio_approval

Claude

get_project

Claude

get_project_information

Claude

get_quickbooks_desktop_cost_codes

Claude

get_quickbooks_online_cost_codes

Claude

get_realpage_cost_codes

Claude

get_recall_transcripts

Claude

get_sage_300_cost_codes

Claude

get_sage_intacct_cost_codes

Claude

get_schedule

Claude

get_source_draw_summary

Claude

get_tariff_data

Claude

get_vendor

Claude

get_vendor_analytics

Claude

get_weather_forecast

Claude

get_yardi_cost_codes

Claude

invite_vendor_to_bid

Claude

list_approval_workflows

Claude

list_bids

Claude

list_budget_lines

Claude

list_cois

Claude

list_commitments

Claude

list_cost_analytics

Claude

list_draw_trees

Claude

list_external_cost_codes

Claude

list_external_vendors

Claude

list_inbox

Claude

list_invoice_payments

Claude

list_invoices

Claude

list_lien_waivers

Claude

list_payment_trackers

Claude

list_payments

Claude

list_portfolio_approvals

Claude

list_project_ids

Claude

list_projects

Claude

list_recall_transcripts

Claude

list_requisitions

Claude

list_synced_emails

Claude

list_users

Claude

list_vendor_analytics

Claude

list_vendors

Claude

search_projects

Claude

set_project_metadata

Claude

update_approval_workflow

Claude

update_bid

Claude

update_budget_categorization

Claude

update_budget_line

Claude

update_budget_scenario

Claude

update_budget_transaction

Claude

update_cash_flow_budget_line

Claude

update_coi

Claude

update_commitment_line_item

Claude

update_draw_approval

Claude

update_external_cost_codes

Claude

update_inbox_item

Claude

update_invoice

Claude

update_invoice_line_item

Claude

update_lien_waiver

Claude

update_payment

Claude

update_payment_tracker

Claude

update_portfolio_approval

Claude

update_requisition_period

Claude

update_schedule_task

Claude

update_vendor

Claude

whoami

Claude

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

Similar Apps