phasio

Phasio is the operating platform contract manufacturers run on: quoting, production, and back office across additive, CNC, molding, and every process in…

От сообщества: Добавлен пользователем или импортирован; проверьте владельца перед подключениемРаботаетБез входаГлобальныйБесплатноТолько чтение

Что умеет

  • Aggregate: Aggregate a dataset: sum/avg/count/min/max of a field, optionally grouped by one or more fields, with an optional RSQL filter. Use this for cross-cutting questions like highest-value custom
  • Delete: Delete one row of a writable entity: leadTime, materialPrices, operatorSettings, paymentTerm, postProcessing, processPrices, shippingMethod, taxComponent, taxJurisdiction, typescriptEquation.
  • DescribeConfiguration: Describe the manufacturer's setup: a summary of processes, materials, finishing, tax, shipping and documents, plus the operator-level settings that have no dataset — storefront

Какие данные видит

Нужен ли аккаунт

Не нужен: сервер работает без входа

Phasio is the operating platform contract manufacturers run on: quoting, production, and back office across additive, CNC, molding, and every process in between. This connector gives LLMs like Claude, ChatGPT and Grok access to your Phasio workspace, so you can interact naturally with your manufacturing data.

Commercial - Which customers drive the most revenue? How storefront self-service orders compare against quotes your team builds by hand? Where do carts convert and where they stall?

Parts - Inspect any parts volume, bounding box, minimum wall thickness and watertightness, with rendered orthogonal views. Find near-duplicates of a part you've already made before you quote it again.

Pricing - Run quotes against parts using your LLM. Ask the model to explain why a part got a certain price, and to tune and refine your pricing equations.

Production - Where a job's parts sit on the routing right now? What's been scrapped and why, and which other jobs were caught by the same failed build?

Setup - Easily configure pricing equations, shop floor routing and your QMS agentically.

Как подключить

Как подключить phasio к Claude

Адрес сервера, который нужно вставить в настройках Claude:

https://phasio.run.tools

  1. Откройте Claude (сайт claude.ai или приложение для компьютера).
  2. Перейдите в Настройки → Коннекторы (в английском интерфейсе: Settings → Connectors).
  3. Нажмите Добавить пользовательский коннектор (Add custom connector).
  4. Вставьте адрес сервера, скопированный ниже, в поле URL удалённого MCP-сервера и нажмите Добавить.
  5. В чате нажмите + → Коннекторы и включите новый коннектор.

Пользовательские коннекторы доступны на тарифах Free, Pro, Max, Team и Enterprise. На Free можно добавить только один. В Team и Enterprise коннектор сначала добавляет владелец организации в Настройки организации → Коннекторы.

Авторизация

После нажатия Добавить откроется окно входа в сервис. Войдите под своим аккаунтом и подтвердите доступ. Пароль Claude не видит.

Как подключить phasio к ChatGPT

Адрес сервера, который нужно вставить в настройках ChatGPT:

https://phasio.run.tools

  1. Откройте ChatGPT в браузере (chatgpt.com). Нужен тариф Plus, Pro, Business, Enterprise или Edu.
  2. Один раз включите режим разработчика: Настройки → Приложения → Дополнительные настройки → Режим разработчика (Settings → Apps → Advanced settings → Developer mode).
  3. Откройте Настройки → Коннекторы и нажмите Создать (Create).
  4. Заполните форму: Название (любое), Описание (одна фраза, что делает сервис), URL MCP-сервера (скопируйте ниже).
  5. В поле Аутентификация выберите OAuth, если сервис требует вход, иначе Нет. Нажмите Создать.
  6. В новом чате откройте + → Приложения/Коннекторы и включите коннектор.

Название раздела у OpenAI менялось (Connectors → Apps/Plugins). Если пункт называется иначе, ищите «режим разработчика» в настройках. В рабочих пространствах Business/Enterprise администратор должен разрешить пользовательские коннекторы.

Авторизация

При первом использовании ChatGPT откроет окно входа в сервис. Войдите и подтвердите доступ.

Как подключить phasio к Cursor

Адрес сервера, который нужно вставить в настройках Cursor:

https://phasio.run.tools

Быстрый способ: нажмите кнопку Открыть в Cursor ниже, Cursor сам предложит добавить сервер.

Вручную:

  1. В Cursor откройте Settings → Cursor Settings → MCP и нажмите Add new global MCP server.
  2. Вставьте JSON, скопированный ниже, в открывшийся файл ~/.cursor/mcp.json (для одного проекта: .cursor/mcp.json в корне проекта).
  3. Сохраните файл. Сервер появится в списке MCP; при необходимости пройдите авторизацию по кнопке рядом с ним.

Авторизация

Если сервис требует вход, рядом с сервером в списке MCP появится кнопка авторизации.

Список инструментов сервера (19)

Технические названия из tools/list. Нужны только разработчикам.

aggregateAggregate a dataset: sum/avg/count/min/max of a field, optionally grouped by one or more fields, with an optional RSQL filter. Use this for cross-cutting questions like highest-value customers (aggregate order, sum, localPrice, groupBy=[customerOrganisationName], filter="state==ORDER") or revenue by process. Datasets that carry a voided/deleted flag exclude those rows by default (see the Scope line from describeQueryableFields); line-item datasets like requisition are NOT scoped by their parent order's status, so filter explicitly for placed-orders-only revenue. Datasets: order, partRevision, partSpecification, productionStep, customerOrganisation, cart, requisition, workOrder, processPrices, materialPrices, postProcessing, typescriptEquation, operation, batchMovement, scrap, material, color, jurisdiction, leadTime, precisionPrices, infill, taxJurisdiction, taxComponent, paymentTerm, discount, shippingBox, shippingMethod, routingTemplate, kanbanColumn, documentTemplate. Call describeQueryableFields(entity) for valid field names.
deleteDelete one row of a writable entity: leadTime, materialPrices, operatorSettings, paymentTerm, postProcessing, processPrices, shippingMethod, taxComponent, taxJurisdiction, typescriptEquation. Irreversible. Each entity has its own refusals (see describeQueryableFields(entity)); e.g. a live pricing equation is refused.
describeConfigurationDescribe the manufacturer's setup: a summary of processes, materials, finishing, tax, shipping and documents, plus the operator-level settings that have no dataset — storefront controls (login, order limits, invoice/PO, feature flags), currencies and exchange rates, accounting integration, contact details, permitted and email domains, payment information and onboarding progress. Pass 'section' to read one part. For row-level detail use query(entity=...); for problems in the setup use lintConfiguration.
describeDataModelExplain the manufacturer's data model: what each query dataset means and how they relate (part -> specification -> requisition -> order, with production and pricing attached). Call this first to understand how to traverse between datasets.
describePricingEquationApiStart here before reading, writing or changing a pricing equation. Returns the TypeScript contract the equation runs against (specification, revision, requisition, customer, workflow, done(), variable(), round, useDimension, createBands; for scope ORDER: parts, subtotal, customer, addLineItem), narrowed to the given scope + ownerId: its technology, material names and material variable names, lead-time names, and which modules the manufacturer has. Explains the loop: save(entity=typescriptEquation) to validate and store a version, generateQuote(equationId) to test it, then — only on the manufacturer's explicit request — publishEquation to make it live. Pass includeSource=true to also get the live equation's source, or equationId=<id> to get the source of one specific version (a draft, for example) with its live/not-live state.
describeQueryableFieldsList the filterable fields (and enum values) for a query dataset, so you can build a valid RSQL filter. For a writable entity it also lists the fields save() accepts and what delete() refuses; for a write-only entity such as operatorSettings it lists only those.
explainPriceExplain why an existing requisition (order line) costs what it does. Recomputes its price from its actual configuration and returns the price breakdown plus the pricing-equation variables behind it, and compares against the stored quotedPrice to flag if that snapshot is stale. Individual pricing-equation variables can be manually overridden per line, so a returned variable value may be an override rather than what the equation would compute. To understand a price, examine these variables and reconcile them against describePricingEquationApi(includeSource=true) (the formula and how each variable is derived) and query materialPrices (by processPricesId + materialId, for the material's density and the rate values the equation reads off the material); a variable that doesn't reconcile with the equation and material rates has been overridden. For a hypothetical or what-if part, use generateQuote instead.
findSimilarPartsFind the part revisions most similar in shape to a given one. Similarity is a geometric shape-descriptor distance: 0 = identical shape, up to ~1.414 = unrelated (cosine ~= 1 - d^2/2). It is rotation- and scale-invariant, so it matches shape/proportion and ignores absolute size and orientation — two parts of the same shape at different sizes score as very similar; use inspectPartRevision for real dimensions. As a rule of thumb distance < 0.05 is a near-duplicate. Requires the part revision's UUID (find one via query(entity="partRevision")).
generateQuotePrice a part configuration on demand and return the price breakdown plus the pricing-equation variables that make up the price. Use for a part not yet ordered, or to test a change (different process/material/quantity, or override an input variable). Pass equationId to test a non-live equation version saved via save(entity=typescriptEquation); call once with and once without it to compare it against live. Purely a calculation — nothing is saved. To explain the price of an EXISTING order line, use explainPrice instead.
getCustomerOverridesReturn the pricing configured specifically for one customer organisation, as opposed to the storefront defaults: customer-specific processes (with their bounding box and bulk quantities), material rates, precision and infill options, and catalogue price tiers on the customer's article references. Use it to answer 'does customer X have special pricing?'.
getDocumentTemplateReturn one document template in full: its type, language, page size and the HTML content that is rendered for confirmations, invoices, estimates, traveller sheets or labels. List templates first with query(entity="documentTemplate").
getOnboardingProgressReturn the manufacturer's onboarding-wizard progress: each step (setup-processes, setup-pricing-equations, setup-post-processing, setup-tax-jurisdictions, setup-tax, configure-shipping, configure-payment-options, add-terms-of-service) with its status and completion time. lintConfiguration findings reference these step ids.
getProductionHistoryWhat has happened to ONE requisition's parts in production: a chronological log of batch moves and scrap events (with the scrap reason), plus other requisitions that passed through the same build step as any scrap (i.e. parts impacted by the same failure). Find a requisition id via query(entity="requisition"). This is scoped to a single requisition — for scrap across the shop floor (totals, most common reasons, scrap by stage/operation, or over a time window) use query(entity="scrap") or aggregate(entity="scrap", ...) directly; do NOT loop this tool over requisitions.
getProductionProgressWhere a requisition's parts are right now: the quantity sitting at each production step/operation, in routing order. Find a requisition id via query(entity="requisition").
inspectPartRevisionInspect a single part revision: returns its geometric metrics (volume, surface area, bounding box, minimum wall thickness, convex hull volume, watertightness) together with a single image showing the six orthogonal views (+X, -X, +Y, -Y, +Z, -Z) of the part, each cell labelled with its camera direction. Use this to answer any question about a part's geometry, manufacturability, size, or appearance. Requires the part revision's UUID.
lintConfigurationCheck the manufacturer's setup for problems and report them by severity. BLOCKER = quoting or checkout cannot work (no process, no live pricing equation, a material missing an equation variable, no default tax jurisdiction, no shipping method, no payment path); WARNING = works but likely wrong (finish not offered on any process, jurisdiction with no components, no terms of service, unverified email domain, expired exchange rate); INFO = worth a look. Each finding names the onboarding step that fixes it and the entity involved. Call this first when asked whether the setup is complete or why quoting fails.
publishEquationSENSITIVE — changes live storefront prices immediately. Makes a saved, validated typescriptEquation version the LIVE pricing equation of its process, post-processing, or the order level; the previous live version stops pricing at once, and every customer quote from now on uses the new one. Do this ONLY when the manufacturer explicitly asked to make this specific version live, after generateQuote(equationId) on several real parts compared against the live price, and after telling them what will change. Never publish to 'try it out': generateQuote(equationId) tests a version without publishing. Requires confirm=true and the id of the version you are replacing (or NONE). Before this, a new version prices nothing (lint PROCESS_NO_LIVE_EQUATION). Reversal: publish the previous version again with this tool. The same action is also available as save(entity="typescriptEquation", id=<equationId>, data={isLive: true, replacesLiveEquationId, confirm: true}).
queryQuery the manufacturer's live data with an RSQL filter. Datasets: order (Orders and quotes share the same entity. The state field distinguishes QUOTE, ORDER, and DRAFT. Payment status is independent: a placed PO/invoice order can remain UNPAID until settlement. 'price' is the order total in the order's own 'currency'; 'localPrice' is the same total converted to the operator's home currency ('localCurrency'). Sum localPrice (not price) to compare revenue across orders in different currencies. 'source' is the sales channel: INBOUND = placed by the customer through the storefront (self-service, online); OUTBOUND = created and sent out by the manufacturer's team (a staff-built quote). Filter or group by source to split self-service vs staff-created orders.); partRevision (Part revisions (a versioned 3D part). 'designName' is the manufacturer's INTERNAL name for the part design — not what the customer sees; when a user names a part they usually mean the customer-facing requisition.name, so prefer that for matching user references. Geometry detail is via inspectPartRevision.); partSpecification (Part specifications: how a part revision is to be made (process, material, finish).); productionStep (A stage in production: a build group of parts undergoing one operation (e.g. 3D Print, Post-Process, Quality Control). Parts move from step to step as they are manufactured.); customerOrganisation (Customer organisations (the manufacturer's customers).); cart (Storefront shopping carts (status OPEN, CONVERTED to an order, or DELETED). Use for conversion analysis.); requisition (Requisitions: a part specification ordered on an order (the order line item; carries quantity and pricing). 'name' is the CUSTOMER-FACING part name — this is what customers and users call the line, so match it when someone refers to a part by name (filter name=="...", or name-contains via RSQL). It is distinct from the manufacturer's internal partRevision.designName; the same physical part can have a differ
saveCreate (no id) or update (with id) one row of a writable entity: leadTime, materialPrices, operatorSettings, paymentTerm, postProcessing, processPrices, shippingMethod, taxComponent, taxJurisdiction, typescriptEquation. Field list and rules per entity: describeQueryableFields(entity). Some updates change live behaviour at once (e.g. overwriting a live pricing equation); the reply says when that happened.