Should-cost of a machined, sheet metal or cast part from its PDF, DXF or STEP drawing, line by line.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this when the user asks for the hourly rate of a machine or workstation (CNC, laser, press, welding cell...). Computes it from the user's values (price, utilisation, labour, energy) for free, or reads a reference rate from the database (1 credit). Do not use for labour-only salary questions.
Poste de la base (une valeur par appel)
OU vos propres valeurs : le taux est alors calculé (formule du site)
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Use this when the user asks for the hourly rate of a machine or workstation (CNC, laser, press, welding cell...). Computes it from the user's values (price, utilisation, labour, energy) for free, or reads a reference rate from the database (1 credit). Do not use for labour-only salary questions.
| Argument | Type | Description |
|---|---|---|
| poste | string | Poste de la base (une valeur par appel) |
| machine | object | OU vos propres valeurs : le taux est alors calculé (formule du site) |
{
"type": "object",
"properties": {
"poste": {
"enum": [
"accrochage",
"bain_anodisation",
"bain_chromage",
"bain_electropolissage",
"bain_galvanisation",
"bain_nickel_chimique",
"bain_passivation",
"bain_zingage",
"cabine",
"centre_usinage",
"centrifugeuse",
"chargement",
"cintreuse",
"circuit_imprime",
"colmatage",
"consommables_tampographie",
"controle",
"controle_dimensionnel",
"controle_rx",
"controle_visuel",
"coulee",
"coupe_denudage",
"detourage",
"ebarbage",
"ebavurage",
"electroerosion",
"etirage",
"finition",
"fonderie_cire_perdue",
"four",
"four_etuvage",
"four_frittage",
"four_mim",
"four_revenu",
"four_t6",
"four_trempe",
"fusion",
"grenaillage_manuel",
"grenailleuse",
"jet_eau",
"lancement",
"laser",
"ligne_cms",
"machine_rotomoulage",
"main_oeuvre",
"manutention",
"marquage_laser",
"microbillage",
"montage_manuel",
"montage_moule",
"moulage",
"outillage",
"outillage_cms",
"oxycoupage",
"passivation",
"plasma",
"plieuse",
"poinconneuse",
"pose_cms",
"presse",
"presse_compactage",
"presse_detourage",
"presse_emboutissage_publiee",
"presse_extrusion",
"presse_extrusion_publiee",
"presse_forge",
"presse_injection",
"presse_injection_dimensionnee",
"presse_mim",
"presse_mousse",
"presse_sous_pression",
"presse_sous_pression_publiee",
"pretraitement",
"rectifieuse",
"refusion",
"reprise_mim",
"reprises",
"sablage",
"sciage",
"scie",
"serigraphie",
"soudage",
"soudage_manuel",
"soudure_vague",
"souffleuse",
"sous_traitance",
"tampographie",
"test",
"thermoformeuse",
"tour",
"traitement_thermique",
"vernissage",
"vibrateur"
],
"type": "string",
"description": "Poste de la base (une valeur par appel)"
},
"machine": {
"type": "object",
"properties": {
"surface_m2": {
"type": "number"
},
"prix_kwh_eur": {
"type": "number"
},
"puissance_kw": {
"type": "number"
},
"cout_m2_an_eur": {
"type": "number"
},
"operateur_eur_h": {
"type": "number"
},
"taux_charge_pct": {
"type": "number"
},
"prix_machine_eur": {
"type": "number"
},
"taux_interet_pct": {
"type": "number"
},
"maintenance_pct_an": {
"type": "number"
},
"annees_amortissement": {
"type": "number"
},
"heures_productives_an": {
"type": "number"
},
"outils_coupants_eur_h": {
"type": "number"
}
},
"description": "OU vos propres valeurs : le taux est alors calculé (formule du site)"
}
}
}Use this when the user asks what a manufactured part should cost (should-cost, target price, quote check) and a plan_id is available. Returns the unit price broken down line by line: material, each operation with machine and time, setups, overheads, margin, and what is not included. Requires material and quantity; ask the user if they are missing. Do not use for general price questions without a drawing. 1 credit.
| Argument | Type | Description |
|---|---|---|
| matiere* | string | Ex. aluminium, acier, inox, fonte, pa6 |
| plan_id* | string | Identifiant rendu par POST /plans |
| quantite* | integer | |
| ajustements | object | Paramètres du modèle (voir ajustements_possibles dans la réponse) |
| epaisseur_mm | number | Pour la tôle si le plan ne la porte pas |
| nb_campagnes | integer | |
| lot_de_fabrication | any | Nombre de pièces par lot, ou « commande_entiere » |
{
"type": "object",
"required": [
"plan_id",
"matiere",
"quantite"
],
"properties": {
"matiere": {
"type": "string",
"description": "Ex. aluminium, acier, inox, fonte, pa6"
},
"plan_id": {
"type": "string",
"description": "Identifiant rendu par POST /plans"
},
"quantite": {
"type": "integer",
"minimum": 1
},
"ajustements": {
"type": "object",
"description": "Paramètres du modèle (voir ajustements_possibles dans la réponse)"
},
"epaisseur_mm": {
"type": "number",
"description": "Pour la tôle si le plan ne la porte pas"
},
"nb_campagnes": {
"type": "integer",
"default": 1,
"minimum": 1
},
"lot_de_fabrication": {
"oneOf": [
{
"type": "integer",
"minimum": 1
},
{
"enum": [
"commande_entiere"
],
"type": "string"
}
],
"description": "Nombre de pièces par lot, ou « commande_entiere »"
}
}
}Use this when the user wants to see how the unit price of the same part changes with quantity (2 to 8 quantities, e.g. 50, 500, 5000). Returns one costed line per quantity. Do not use for a single quantity (use chiffrer_piece). 1 credit per quantity.
| Argument | Type | Description |
|---|---|---|
| detail | boolean | Renvoyer toutes les lignes pour chaque quantité |
| matiere* | string | Ex. aluminium, acier, inox, fonte, pa6 |
| plan_id* | string | Identifiant rendu par POST /plans |
| quantites* | array | |
| ajustements | object | Paramètres du modèle (voir ajustements_possibles dans la réponse) |
| epaisseur_mm | number | Pour la tôle si le plan ne la porte pas |
| nb_campagnes | integer | |
| lot_de_fabrication | any | Nombre de pièces par lot, ou « commande_entiere » |
{
"type": "object",
"required": [
"plan_id",
"matiere",
"quantites"
],
"properties": {
"detail": {
"type": "boolean",
"default": false,
"description": "Renvoyer toutes les lignes pour chaque quantité"
},
"matiere": {
"type": "string",
"description": "Ex. aluminium, acier, inox, fonte, pa6"
},
"plan_id": {
"type": "string",
"description": "Identifiant rendu par POST /plans"
},
"quantites": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
},
"maxItems": 8,
"minItems": 2
},
"ajustements": {
"type": "object",
"description": "Paramètres du modèle (voir ajustements_possibles dans la réponse)"
},
"epaisseur_mm": {
"type": "number",
"description": "Pour la tôle si le plan ne la porte pas"
},
"nb_campagnes": {
"type": "integer",
"default": 1,
"minimum": 1
},
"lot_de_fabrication": {
"oneOf": [
{
"type": "integer",
"minimum": 1
},
{
"enum": [
"commande_entiere"
],
"type": "string"
}
],
"description": "Nombre de pièces par lot, ou « commande_entiere »"
}
}
}Use this when the user asks how many estimates or credits remain, or what limits apply. Returns remaining credits, quotas and recent calls. Free, read-only.
No arguments.
{
"type": "object",
"properties": {}
}Use this when the user provides a technical drawing of a manufactured part (PDF, DXF or STEP, max 20 MB) that will be costed. Uploads the file (base64) and returns a plan_id plus the dimensions and features read from it. Do not use for photos, invoices or documents that are not part drawings. Free.
| Argument | Type | Description |
|---|---|---|
| nom_fichier* | string | Ex. piece.pdf |
| contenu_base64* | string | Contenu du fichier en base64 |
{
"type": "object",
"required": [
"nom_fichier",
"contenu_base64"
],
"properties": {
"nom_fichier": {
"type": "string",
"description": "Ex. piece.pdf"
},
"contenu_base64": {
"type": "string",
"description": "Contenu du fichier en base64"
}
}
}Use this only when the user asks to buy or top up estimates, or after an estimate failed because credits ran out and the user wants to continue. Returns a secure card payment page (Stripe) to give to the user: pack25 (25 estimates, EUR 15 excl. VAT), pack100 (100, EUR 50), illimite (unlimited, EUR 200 per month). No payment happens inside the conversation; credits are added as soon as payment is confirmed. Free.
| Argument | Type | Description |
|---|---|---|
| offre* | string | pack25 (25 chiffrages, 15 EUR HT), pack100 (100, 50 EUR HT) ou illimite (abonnement mensuel 200 EUR HT, usage raisonnable 3 000 par jour) |
{
"type": "object",
"required": [
"offre"
],
"properties": {
"offre": {
"enum": [
"pack25",
"pack100",
"illimite"
],
"type": "string",
"description": "pack25 (25 chiffrages, 15 EUR HT), pack100 (100, 50 EUR HT) ou illimite (abonnement mensuel 200 EUR HT, usage raisonnable 3 000 par jour)"
}
}
}Use this when the user has a supplier quote for a part and wants to know if the price is fair. Compares the quoted price with the price rebuilt from the drawing, line by line, and lists the questions to ask the supplier. Requires a plan_id and the quoted unit price. 1 credit. The quote can be passed either as its unit price (devis.prix_unitaire_eur) or as the PDF file (devis.pdf_base64); with the PDF, the price, quantity and supplier are read automatically and returned in devis_lu.
| Argument | Type | Description |
|---|---|---|
| devis* | object | Supplier quote: give prix_unitaire_eur, or pdf_base64, or both (prix_unitaire_eur then wins). |
| matiere* | string | Ex. aluminium, acier, inox, fonte, pa6 |
| plan_id* | string | Identifiant rendu par POST /plans |
| quantite* | integer | |
| ajustements | object | Paramètres du modèle (voir ajustements_possibles dans la réponse) |
| epaisseur_mm | number | Pour la tôle si le plan ne la porte pas |
| nb_campagnes | integer | |
| lot_de_fabrication | any |
| Nombre de pièces par lot, ou « commande_entiere » |
{
"type": "object",
"required": [
"plan_id",
"matiere",
"quantite",
"devis"
],
"properties": {
"devis": {
"type": "object",
"anyOf": [
{
"required": [
"prix_unitaire_eur"
]
},
{
"required": [
"pdf_base64"
]
}
],
"required": [],
"properties": {
"lignes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"poste": {
"type": "string"
},
"montant_eur": {
"type": "number"
}
}
}
},
"pdf_base64": {
"type": "string",
"description": "Optional: the supplier quote itself as a PDF, base64-encoded (max 8 MB). If prix_unitaire_eur is not given, the unit price is read from this PDF. Text PDFs only (scanned quotes cannot be read: then ask the user for the unit price).",
"contentEncoding": "base64",
"contentMediaType": "application/pdf"
},
"prix_unitaire_eur": {
"type": "number",
"description": "Quoted unit price, EUR excl. VAT."
}
},
"description": "Supplier quote: give prix_unitaire_eur, or pdf_base64, or both (prix_unitaire_eur then wins)."
},
"matiere": {
"type": "string",
"description": "Ex. aluminium, acier, inox, fonte, pa6"
},
"plan_id": {
"type": "string",
"description": "Identifiant rendu par POST /plans"
},
"quantite": {
"type": "integer",
"minimum": 1
},
"ajustements": {
"type": "object",
"description": "Paramètres du modèle (voir ajustements_possibles dans la réponse)"
},
"epaisseur_mm": {
"type": "number",
"description": "Pour la tôle si le plan ne la porte pas"
},
"nb_campagnes": {
"type": "integer",
"default": 1,
"minimum": 1
},
"lot_de_fabrication": {
"oneOf": [
{
"type": "integer",
"minimum": 1
},
{
"enum": [
"commande_entiere"
],
"type": "string"
}
],
"description": "Nombre de pièces par lot, ou « commande_entiere »"
}
}
}