Sheet metal and stock parts from Frankfurt: prices, DFM feedback with images, lead times, quotes.
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.
Stueckliste schrittweise: weitere Positionen (z. B. je hochgeladener Datei) an ein Angebot anhaengen. Ergebnis ist eine neue Fassung mit allen Positionen (supersedes = bisherige quote_id); mit der neuen quote_id weiterarbeiten. [Zugang: requires login: Scope quotes:write. Aendert Daten: ja (neue Angebotsfassung).]
false = ohne CO2e-Angaben (pcf_kg_co2e, pcf_method)
Wiederholschutz: gleicher Wert beim erneuten Versuch, neuer Wert bei geaenderten Eingaben.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http mcp https://mvg-frankfurt.de/mcp
Stueckliste schrittweise: weitere Positionen (z. B. je hochgeladener Datei) an ein Angebot anhaengen. Ergebnis ist eine neue Fassung mit allen Positionen (supersedes = bisherige quote_id); mit der neuen quote_id weiterarbeiten. [Zugang: requires login: Scope quotes:write. Aendert Daten: ja (neue Angebotsfassung).]
| Argument | Type | Description |
|---|---|---|
| items* | array | |
| quote_id* | string | |
| include_pcf | boolean | false = ohne CO2e-Angaben (pcf_kg_co2e, pcf_method) |
| operation_key | string | Wiederholschutz: gleicher Wert beim erneuten Versuch, neuer Wert bei geaenderten Eingaben. |
{
"type": "object",
"required": [
"quote_id",
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"type"
],
"properties": {
"hem": {
"enum": [
"open",
"closed"
],
"type": "string",
"description": "sheet: Umschlag (Biegung unter 30 Grad) offen mit Spalt oder geschlossen zugedrueckt."
},
"cuts": {
"type": "array",
"items": {
"type": "object",
"required": [
"length_mm",
"quantity"
],
"properties": {
"quantity": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"length_mm": {
"type": "number",
"maximum": 12000,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"type": {
"enum": [
"sheet_cut",
"sheet",
"profile",
"accessory",
"upload",
"design",
"part_draft"
],
"type": "string",
"description": "sheet_cut = rechteckiger Blech-Zuschnitt; sheet = Kantteil (Schenkel + Biegungen); profile = Halbzeug-Zuschnitt; accessory = Zubehoer; upload/design = CAD-Teil, part_draft = Entwurf aus configure_part/configure_plate (nur create_quote, mit Anmeldung)"
},
"bends": {
"type": "array",
"items": {
"type": "object",
"required": [
"angle_deg"
],
"properties": {
"angle_deg": {
"type": "number",
"maximum": 180,
"exclusiveMinimum": 0
},
"direction": {
"enum": [
"up",
"down"
],
"type": "string"
},
"inner_radius_mm": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 11,
"description": "sheet: genau eine Biegung weniger als Schenkel"
},
"depth_mm": {
"type": "number",
"maximum": 12000,
"description": "sheet: Laenge der Kantung (zweite Kante)",
"exclusiveMinimum": 0
},
"draft_id": {
"type": "string",
"maxLength": 48,
"description": "part_draft: aus configure_part/configure_plate"
},
"material": {
"type": "string",
"maxLength": 64,
"description": "Werkstoff-Code aus find_materials, z. B. 'aluminium-almg3'"
},
"quantity": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"width_mm": {
"type": "number",
"maximum": 3000,
"description": "sheet_cut: Breite (schmalere Seite ab 20 mm, Tafelschere; schmalere Streifen als Laserteil ueber configure_plate)",
"exclusiveMinimum": 0
},
"design_id": {
"type": "string",
"maxLength": 40
},
"length_mm": {
"type": "number",
"maximum": 12000,
"description": "sheet_cut: Laenge",
"exclusiveMinimum": 0
},
"reference": {
"type": "string",
"maxLength": 80,
"description": "eigene Bezeichnung/Kommission"
},
"upload_id": {
"type": "string",
"maxLength": 40,
"description": "upload: aus create_upload"
},
"article_nr": {
"type": "string",
"maxLength": 32,
"description": "profile/accessory: art_nr aus find_materials"
},
"operations": {
"type": "array",
"items": {
"enum": [
"entgraten"
],
"type": "string"
}
},
"segments_mm": {
"type": "array",
"items": {
"type": "number",
"exclusiveMinimum": 0
},
"maxItems": 12,
"minItems": 1,
"description": "sheet: Schenkellaengen entlang der Kontur"
},
"measure_mode": {
"enum": [
"inside",
"outside"
],
"type": "string",
"description": "sheet: Schenkelmasse aussen (outside) oder innen (inside) gemessen. Fehlt es, gilt outside und die Position wird in der Auftragspruefung geklaert."
},
"thickness_mm": {
"type": "number",
"maximum": 100,
"exclusiveMinimum": 0
},
"visible_side": {
"enum": [
"outside",
"inside",
"any"
],
"type": "string",
"description": "sheet: Sichtseite des Kantteils (Pflicht bei Werkstoffen mit Sichtseite: geschliffen, Folie, eloxiert, lackiert, Riffel). Fehlt sie, wird sie in der Auftragspruefung geklaert."
},
"hole_operations": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"size",
"count"
],
"properties": {
"size": {
"type": "string",
"pattern": "^[Mm][0-9]{1,2}$"
},
"type": {
"enum": [
"gewinde",
"senkung"
],
"type": "string"
},
"count": {
"type": "integer",
"maximum": 500,
"minimum": 1
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "upload/design/part_draft: Gewinde schneiden bzw. Senkungen je Teil (Groessen aus find_hole_operations), z. B. [{type:'gewinde', size:'M6', count:4}]"
}
},
"additionalProperties": false
},
"maxItems": 25,
"minItems": 1
},
"quote_id": {
"type": "string",
"maxLength": 40
},
"include_pcf": {
"type": "boolean",
"default": true,
"description": "false = ohne CO2e-Angaben (pcf_kg_co2e, pcf_method)"
},
"operation_key": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]*$",
"maxLength": 64,
"description": "Wiederholschutz: gleicher Wert beim erneuten Versuch, neuer Wert bei geaenderten Eingaben."
}
},
"additionalProperties": false
}Konstruktionsgrenzen fuer Werkstoff + Dicke (max. Format, max. Laser-Dicke je Werkstoff aus dem Maschinenpark, kleinster Lochdurchmesser, Steg, Randabstand, Biegung, Mindestschenkel) und, mit part, Pruefung eines Kantteils ohne Datei (tolerance_mm = gewuenschte Masstoleranz +/- mm). Mit design_id oder upload_id (Anmeldung, designs:write) wird eine CAD-Datei geprueft (flache Teile inkl. Konturen: Stege, Schlitze, Inseln, Kleinteile). Ergebnis: status ok|warn|block, ampel (fertigbar|hinweis|pruefanfrage|nicht_fertigbar), requirements und feedback: counts {block, warn}, issues[] mit where (Kantung/Ort), limit (Grenzwert) und fix (anwendbare Aenderung Feld + Wert, price_effect_net in Cent), bends[] je Kantung und visual (part_svg_url Querschnitt, bending_svg_url Biegeschritte mit Werkzeug, Kollision rot). Nur bei counts 0/0 fehlerfrei melden. Beispiel: {"material":"edelstahl-1.4301","thickness_mm":2,"part":{"depth_mm":500,"segments_mm":[5,100,40],"bends":[{"angle_deg":90},{"angle_deg":90}]}}. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]
| Argument | Type | Description |
|---|---|---|
| part | object | |
| material | string | |
| design_id | string | |
| upload_id | string | |
| thickness_mm | number | |
| tolerance_mm | number |
Status einer Bestellung des angemeldeten Kundenkontos (order_id oder Nummer aus list_orders). Nur mit OAuth-Zustimmung eines Kundenkontos. Hoechstens alle 15 Minuten abfragen. Statt Abfragen: Ereignis-Meldungen order.status_changed ueber POST /v1/webhooks (MVG-API-Key, Scope webhooks:write, signiert). [Zugang: requires login: OAuth-Zustimmung eines Kundenkontos, Scope orders:read. Aendert Daten: nein.]
| Argument | Type | Description |
|---|---|---|
| order_id* | string |
{
"type": "object",
"required": [
"order_id"
],
"properties": {
"order_id": {
"type": "string",
"maxLength": 80
}
},
"additionalProperties": false
}Teil aus einer Vorlage (template + params aus list_part_templates) plus optionale Zusatzloecher: der Server baut die Geometrie wie der Teile-Editor, prueft die Fertigbarkeit (Lochabstand Rand/Steg, Mindest-Loch-Ø je Dicke, Format) und rechnet den Shop-Preis netto+brutto inkl. aller Kosten (Kanal online). Ergebnis: status (ready|needs_review|price_unavailable|editor_only), price, lead_time, manufacturing_notes, preview_url (bemasste SVG-Zeichnung, 7 Tage), editor_url (Teile-Editor mit genau diesem Teil, dort in den Warenkorb), draft_id (7 Tage; angemeldet create_quote mit {type:'part_draft', draft_id}). Beispiel Flansch: {template:'flansch', params:{D:200,d:60,nl:4,dl:9,lk:140}, material:'aluminium-almg3', thickness_mm:3, quantity:1}. Koordinaten der extra_holes in mm ab linker unterer Ecke. Anwendungen (group 'anwendung', z. B. {template:'fensterbank', params:{L:1200,tiefe:150,ue:40,auf:20,ab:40,tropf:1}, material:'aluminium-almg3', thickness_mm:2}): Aussenmasse, Ergebnis mit price, manufacturability, order_item (fuer get_price/create_quote) und page_url (Seite mit vorbelegten Massen, dort in den Warenkorb). Speichert keine Kundendaten. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein (nur temporaerer Entwurf, 7 Tage).]
| Argument | Type | Description |
|---|---|---|
| name | string | |
| params | object | Werte je Parameter-key der Vorlage (fehlende = Vorgabe) |
| delivery | object | |
| material* | string | |
| quantity | integer | |
| template |
Einfachster Weg fuer 'Ich brauche dieses Teil': rechteckige Platte length_mm x width_mm mit runden Loechern (holes: x_mm/y_mm = Lochmitte ab linker unterer Ecke, diameter_mm), optional corner_radius_mm. Sonst wie configure_part: Fertigbarkeit, Shop-Preis netto+brutto, Lieferzeit, preview_url, editor_url, draft_id. Beispiel: Platte 200 x 100 x 3 AlMg3 mit 6 Loechern Ø 9 -> {length_mm:200, width_mm:100, thickness_mm:3, material:'aluminium-almg3', holes:[{x_mm:20,y_mm:20,diameter_mm:9}, ...]}. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein (nur temporaerer Entwurf, 7 Tage).]
| Argument | Type | Description |
|---|---|---|
| name | string | |
| holes | array | |
| delivery | object | |
| material* | string | |
| quantity | integer | |
| width_mm* | number | |
| length_mm* | number | |
| thickness_mm* | number | |
| corner_radius_mm | number |
Verbindliches Angebot (24 h) netto und brutto mit quote_id und checkout_url: der Link oeffnet den Warenkorb der Website mit genau diesen Positionen. Bestellen und bezahlen tut dort ein Mensch. Positionen wie get_price plus upload (aus create_upload) und design. requirements: block = nicht bestellbar (kein checkout_url), warn = Kunde bestaetigt im Warenkorb. Positionen als Liste items, Beispiel: {"items": [{"type": "sheet_cut", "material": "aluminium-almg3", "thickness_mm": 2, "length_mm": 1000, "width_mm": 500, "quantity": 2}], "delivery": {"mode": "shipping", "postal_code": "60314"}} [Zugang: requires login: Scope quotes:write. Aendert Daten: ja (Angebot).]
| Argument | Type | Description |
|---|---|---|
| items* | array | |
| delivery | object | |
| include_pcf | boolean | false = ohne CO2e-Angaben (pcf_kg_co2e, pcf_method) |
| operation_key | string | Wiederholschutz: gleicher Wert beim erneuten Versuch, neuer Wert bei geaenderten Eingaben. |
{
"type": "object",
"examples": [
{
"items": [
{
"type": "sheet_cut",
"material": "aluminium-almg3",
"quantity": 2,
"width_mm": 500,
"length_mm": 1000,
"thickness_mm": 2
}
],
"delivery": {
"mode": "shipping",
"postal_code": "60314"
},
"operation_key": "angebot-1"
}
],
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"type"
],
"properties": {
"hem": {
"enum": [
"open",
"closed"
],
"type": "string",
"description": "sheet: Umschlag (Biegung unter 30 Grad) offen mit Spalt oder geschlossen zugedrueckt."
},
"cuts": {
"type": "array",
"items": {
"type": "object",
"required": [
"length_mm",
"quantity"
],
"properties": {
"quantity": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"length_mm": {
"type": "number",
"maximum": 12000,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"type": {
"enum": [
"sheet_cut",
"sheet",
"profile",
"accessory",
"upload",
"design",
"part_draft"
],
"type": "string",
"description": "sheet_cut = rechteckiger Blech-Zuschnitt; sheet = Kantteil (Schenkel + Biegungen); profile = Halbzeug-Zuschnitt; accessory = Zubehoer; upload/design = CAD-Teil, part_draft = Entwurf aus configure_part/configure_plate (nur create_quote, mit Anmeldung)"
},
"bends": {
"type": "array",
"items": {
"type": "object",
"required": [
"angle_deg"
],
"properties": {
"angle_deg": {
"type": "number",
"maximum": 180,
"exclusiveMinimum": 0
},
"direction": {
"enum": [
"up",
"down"
],
"type": "string"
},
"inner_radius_mm": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 11,
"description": "sheet: genau eine Biegung weniger als Schenkel"
},
"depth_mm": {
"type": "number",
"maximum": 12000,
"description": "sheet: Laenge der Kantung (zweite Kante)",
"exclusiveMinimum": 0
},
"draft_id": {
"type": "string",
"maxLength": 48,
"description": "part_draft: aus configure_part/configure_plate"
},
"material": {
"type": "string",
"maxLength": 64,
"description": "Werkstoff-Code aus find_materials, z. B. 'aluminium-almg3'"
},
"quantity": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"width_mm": {
"type": "number",
"maximum": 3000,
"description": "sheet_cut: Breite (schmalere Seite ab 20 mm, Tafelschere; schmalere Streifen als Laserteil ueber configure_plate)",
"exclusiveMinimum": 0
},
"design_id": {
"type": "string",
"maxLength": 40
},
"length_mm": {
"type": "number",
"maximum": 12000,
"description": "sheet_cut: Laenge",
"exclusiveMinimum": 0
},
"reference": {
"type": "string",
"maxLength": 80,
"description": "eigene Bezeichnung/Kommission"
},
"upload_id": {
"type": "string",
"maxLength": 40,
"description": "upload: aus create_upload"
},
"article_nr": {
"type": "string",
"maxLength": 32,
"description": "profile/accessory: art_nr aus find_materials"
},
"operations": {
"type": "array",
"items": {
"enum": [
"entgraten"
],
"type": "string"
}
},
"segments_mm": {
"type": "array",
"items": {
"type": "number",
"exclusiveMinimum": 0
},
"maxItems": 12,
"minItems": 1,
"description": "sheet: Schenkellaengen entlang der Kontur"
},
"measure_mode": {
"enum": [
"inside",
"outside"
],
"type": "string",
"description": "sheet: Schenkelmasse aussen (outside) oder innen (inside) gemessen. Fehlt es, gilt outside und die Position wird in der Auftragspruefung geklaert."
},
"thickness_mm": {
"type": "number",
"maximum": 100,
"exclusiveMinimum": 0
},
"visible_side": {
"enum": [
"outside",
"inside",
"any"
],
"type": "string",
"description": "sheet: Sichtseite des Kantteils (Pflicht bei Werkstoffen mit Sichtseite: geschliffen, Folie, eloxiert, lackiert, Riffel). Fehlt sie, wird sie in der Auftragspruefung geklaert."
},
"hole_operations": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"size",
"count"
],
"properties": {
"size": {
"type": "string",
"pattern": "^[Mm][0-9]{1,2}$"
},
"type": {
"enum": [
"gewinde",
"senkung"
],
"type": "string"
},
"count": {
"type": "integer",
"maximum": 500,
"minimum": 1
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "upload/design/part_draft: Gewinde schneiden bzw. Senkungen je Teil (Groessen aus find_hole_operations), z. B. [{type:'gewinde', size:'M6', count:4}]"
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"delivery": {
"type": "object",
"required": [],
"properties": {
"city": {
"type": "string",
"maxLength": 100
},
"mode": {
"enum": [
"pickup",
"shipping"
],
"type": "string"
},
"postal_code": {
"type": "string",
"maxLength": 10,
"description": "bei shipping Pflicht"
}
},
"additionalProperties": false
},
"include_pcf": {
"type": "boolean",
"default": true,
"description": "false = ohne CO2e-Angaben (pcf_kg_co2e, pcf_method)"
},
"operation_key": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]*$",
"maxLength": 64,
"description": "Wiederholschutz: gleicher Wert beim erneuten Versuch, neuer Wert bei geaenderten Eingaben."
}
},
"additionalProperties": false
}Signierter Link fuer EINE STEP-, DXF-, AI- oder EPS-Datei (15 Minuten, einmalig, STEP bis 50 MiB, DXF/AI/EPS bis 20 MiB; AI/EPS wird zu DXF in mm, Masse stehen in der Upload-Antwort unter vektor). Bytes per PUT auf upload_url; kannst du die Datei nicht lesen, gib dem Nutzer browser_upload_url. Danach create_quote mit {type:'upload', upload_id, material, quantity} (DXF/AI/EPS zusaetzlich thickness_mm). Nie Dateiinhalt als Text/Base64 senden. Wann browser_upload_url: wenn die Datei nur beim Nutzer liegt (Anhang nicht lesbar, Datei auf seinem Rechner). Link sofort weitergeben (15 min), dann mit upload_status pruefen, ob sie angekommen ist (state 'received'), erst danach create_quote. Stueckliste: filenames (bis 20) liefert je Datei einen eigenen Link. [Zugang: requires login: Scope designs:write. Aendert Daten: ja (Upload-Link).]
| Argument | Type | Description |
|---|---|---|
| filename | string | |
| filenames | array |
{
"type": "object",
"required": [],
"properties": {
"filename": {
"type": "string",
"maxLength": 255
},
"filenames": {
"type": "array",
"items": {
"type": "string",
"maxLength": 255
},
"maxItems": 20,
"minItems": 1
}
},
"additionalProperties": false
}Gewinde schneiden und Senkungen je Werkstoff und Dicke: Groessen mit Kernloch bzw. Durchgang, Preis je Stueck netto/brutto (Cent), ob die Groesse fuer diesen Werkstoff und diese Dicke geht (ok/warn/block mit Grund), Ruestpauschale je Auftrag und Lieferzeit-Regel. Verwendung in create_quote: hole_operations an der upload/design-Position. Beispiel: {"material":"aluminium-almg3","thickness_mm":4}. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]
| Argument | Type | Description |
|---|---|---|
| material* | string | |
| thickness_mm | number |
{
"type": "object",
"required": [
"material"
],
"properties": {
"material": {
"type": "string",
"maxLength": 64
},
"thickness_mm": {
"type": "number",
"maximum": 100,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}Bleche: Werkstoffe mit lesbarem Code (material), Dicken (mm + label), Tafelformaten und REACH-Hinweis. Halbzeuge (Rohre, Profile, Flach-, Rund-, Vierkantmaterial): art_nr, Abmessungen, kg/m, Stangenlaenge. query mit Massen wie 'flach 20x5 alu', 'rohr 30x2', 'edelstahl 1.4301'. Beispiel: 'Alu-Winkel 15 x 15 x 2' ist ein Halbzeug-Winkelprofil -> kind 'halbzeug', query 'winkel 15x15x2 alu', danach get_price type 'profile' (kein Kantteil). material bzw. art_nr gehen danach in get_price/create_quote/configure_part. Katalog durchsehen: kind 'halbzeug' mit kategorie, werkstoff und ranges (Massbereich), z. B. {"kind": "halbzeug", "kategorie": "U-Profil", "werkstoff": "edelstahl", "ranges": {"breite_mm": {"min": 30, "max": 50}}}. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]
| Argument | Type | Description |
|---|---|---|
| kind | string | |
| limit | integer | |
| query | string | |
| offset | integer | |
| ranges | object | Halbzeug: Massbereiche, z. B. {"breite_mm": {"min": 30, "max": 50}}. Schluessel wie die Einzelmasse. |
| dicke_mm | number | Halbzeug: genau dieses Mass dicke in mm (+-0,05) |
| hoehe_mm | number | Halbzeug: genau dieses Mass hoehe in mm (+-0,05) |
Reihenfolge, Einheiten, Verbote und Beispiele. Zu Beginn lesen. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]
No arguments.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}Alle Lieferstufen (Termin fertig, Zustellfenster, Aufpreis) und die Versandkosten zur Postleitzahl fuer genau diese Positionen in einem Aufruf; dazu Abholung (ohne Versandkosten). Termine, keine Lagerangaben. Beispiel: {"items":[...], "postal_code":"60314"}. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]
| Argument | Type | Description |
|---|---|---|
| items* | array | |
| postal_code | string | |
| shipping_kind | string |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"type"
],
"properties": {
"hem": {
"enum": [
"open",
"closed"
],
"type": "string",
"description": "sheet: Umschlag (Biegung unter 30 Grad) offen mit Spalt oder geschlossen zugedrueckt."
},
"cuts": {
"type": "array",
"items": {
"type": "object",
"required": [
"length_mm",
"quantity"
],
"properties": {
"quantity": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"length_mm": {
"type": "number",
"maximum": 12000,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"type": {
"enum": [
"sheet_cut",
"sheet",
"profile",
"accessory",
"upload",
"design",
"part_draft"
],
"type": "string",
"description": "sheet_cut = rechteckiger Blech-Zuschnitt; sheet = Kantteil (Schenkel + Biegungen); profile = Halbzeug-Zuschnitt; accessory = Zubehoer; upload/design = CAD-Teil, part_draft = Entwurf aus configure_part/configure_plate (nur create_quote, mit Anmeldung)"
},
"bends": {
"type": "array",
"items": {
"type": "object",
"required": [
"angle_deg"
],
"properties": {
"angle_deg": {
"type": "number",
"maximum": 180,
"exclusiveMinimum": 0
},
"direction": {
"enum": [
"up",
"down"
],
"type": "string"
},
"inner_radius_mm": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 11,
"description": "sheet: genau eine Biegung weniger als Schenkel"
},
"depth_mm": {
"type": "number",
"maximum": 12000,
"description": "sheet: Laenge der Kantung (zweite Kante)",
"exclusiveMinimum": 0
},
"draft_id": {
"type": "string",
"maxLength": 48,
"description": "part_draft: aus configure_part/configure_plate"
},
"material": {
"type": "string",
"maxLength": 64,
"description": "Werkstoff-Code aus find_materials, z. B. 'aluminium-almg3'"
},
"quantity": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"width_mm": {
"type": "number",
"maximum": 3000,
"description": "sheet_cut: Breite (schmalere Seite ab 20 mm, Tafelschere; schmalere Streifen als Laserteil ueber configure_plate)",
"exclusiveMinimum": 0
},
"design_id": {
"type": "string",
"maxLength": 40
},
"length_mm": {
"type": "number",
"maximum": 12000,
"description": "sheet_cut: Laenge",
"exclusiveMinimum": 0
},
"reference": {
"type": "string",
"maxLength": 80,
"description": "eigene Bezeichnung/Kommission"
},
"upload_id": {
"type": "string",
"maxLength": 40,
"description": "upload: aus create_upload"
},
"article_nr": {
"type": "string",
"maxLength": 32,
"description": "profile/accessory: art_nr aus find_materials"
},
"operations": {
"type": "array",
"items": {
"enum": [
"entgraten"
],
"type": "string"
}
},
"segments_mm": {
"type": "array",
"items": {
"type": "number",
"exclusiveMinimum": 0
},
"maxItems": 12,
"minItems": 1,
"description": "sheet: Schenkellaengen entlang der Kontur"
},
"measure_mode": {
"enum": [
"inside",
"outside"
],
"type": "string",
"description": "sheet: Schenkelmasse aussen (outside) oder innen (inside) gemessen. Fehlt es, gilt outside und die Position wird in der Auftragspruefung geklaert."
},
"thickness_mm": {
"type": "number",
"maximum": 100,
"exclusiveMinimum": 0
},
"visible_side": {
"enum": [
"outside",
"inside",
"any"
],
"type": "string",
"description": "sheet: Sichtseite des Kantteils (Pflicht bei Werkstoffen mit Sichtseite: geschliffen, Folie, eloxiert, lackiert, Riffel). Fehlt sie, wird sie in der Auftragspruefung geklaert."
},
"hole_operations": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"size",
"count"
],
"properties": {
"size": {
"type": "string",
"pattern": "^[Mm][0-9]{1,2}$"
},
"type": {
"enum": [
"gewinde",
"senkung"
],
"type": "string"
},
"count": {
"type": "integer",
"maximum": 500,
"minimum": 1
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "upload/design/part_draft: Gewinde schneiden bzw. Senkungen je Teil (Groessen aus find_hole_operations), z. B. [{type:'gewinde', size:'M6', count:4}]"
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"postal_code": {
"type": "string",
"pattern": "^[0-9]{5}$"
},
"shipping_kind": {
"enum": [
"parcel",
"pallet"
],
"type": "string"
}
},
"additionalProperties": false
}Fertigstellungs-/Abholtermin und Zustellfenster je Stufe (Economy, Standard, Express) inkl. Regel Express 24 h (bis Stichzeit bestellt: naechster Werktag gegen eigenen Aufpreis bei kleinen Zuschnitt-Mengen). Mit items gilt der Termin fuer genau diese Positionen; ohne items die allgemeinen Regeln. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]
| Argument | Type | Description |
|---|---|---|
| items | array | |
| shipping_kind | string |
{
"type": "object",
"required": [],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"type"
],
"properties": {
"hem": {
"enum": [
"open",
"closed"
],
"type": "string",
"description": "sheet: Umschlag (Biegung unter 30 Grad) offen mit Spalt oder geschlossen zugedrueckt."
},
"cuts": {
"type": "array",
"items": {
"type": "object",
"required": [
"length_mm",
"quantity"
],
"properties": {
"quantity": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"length_mm": {
"type": "number",
"maximum": 12000,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"type": {
"enum": [
"sheet_cut",
"sheet",
"profile",
"accessory",
"upload",
"design",
"part_draft"
],
"type": "string",
"description": "sheet_cut = rechteckiger Blech-Zuschnitt; sheet = Kantteil (Schenkel + Biegungen); profile = Halbzeug-Zuschnitt; accessory = Zubehoer; upload/design = CAD-Teil, part_draft = Entwurf aus configure_part/configure_plate (nur create_quote, mit Anmeldung)"
},
"bends": {
"type": "array",
"items": {
"type": "object",
"required": [
"angle_deg"
],
"properties": {
"angle_deg": {
"type": "number",
"maximum": 180,
"exclusiveMinimum": 0
},
"direction": {
"enum": [
"up",
"down"
],
"type": "string"
},
"inner_radius_mm": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 11,
"description": "sheet: genau eine Biegung weniger als Schenkel"
},
"depth_mm": {
"type": "number",
"maximum": 12000,
"description": "sheet: Laenge der Kantung (zweite Kante)",
"exclusiveMinimum": 0
},
"draft_id": {
"type": "string",
"maxLength": 48,
"description": "part_draft: aus configure_part/configure_plate"
},
"material": {
"type": "string",
"maxLength": 64,
"description": "Werkstoff-Code aus find_materials, z. B. 'aluminium-almg3'"
},
"quantity": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"width_mm": {
"type": "number",
"maximum": 3000,
"description": "sheet_cut: Breite (schmalere Seite ab 20 mm, Tafelschere; schmalere Streifen als Laserteil ueber configure_plate)",
"exclusiveMinimum": 0
},
"design_id": {
"type": "string",
"maxLength": 40
},
"length_mm": {
"type": "number",
"maximum": 12000,
"description": "sheet_cut: Laenge",
"exclusiveMinimum": 0
},
"reference": {
"type": "string",
"maxLength": 80,
"description": "eigene Bezeichnung/Kommission"
},
"upload_id": {
"type": "string",
"maxLength": 40,
"description": "upload: aus create_upload"
},
"article_nr": {
"type": "string",
"maxLength": 32,
"description": "profile/accessory: art_nr aus find_materials"
},
"operations": {
"type": "array",
"items": {
"enum": [
"entgraten"
],
"type": "string"
}
},
"segments_mm": {
"type": "array",
"items": {
"type": "number",
"exclusiveMinimum": 0
},
"maxItems": 12,
"minItems": 1,
"description": "sheet: Schenkellaengen entlang der Kontur"
},
"measure_mode": {
"enum": [
"inside",
"outside"
],
"type": "string",
"description": "sheet: Schenkelmasse aussen (outside) oder innen (inside) gemessen. Fehlt es, gilt outside und die Position wird in der Auftragspruefung geklaert."
},
"thickness_mm": {
"type": "number",
"maximum": 100,
"exclusiveMinimum": 0
},
"visible_side": {
"enum": [
"outside",
"inside",
"any"
],
"type": "string",
"description": "sheet: Sichtseite des Kantteils (Pflicht bei Werkstoffen mit Sichtseite: geschliffen, Folie, eloxiert, lackiert, Riffel). Fehlt sie, wird sie in der Auftragspruefung geklaert."
},
"hole_operations": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"size",
"count"
],
"properties": {
"size": {
"type": "string",
"pattern": "^[Mm][0-9]{1,2}$"
},
"type": {
"enum": [
"gewinde",
"senkung"
],
"type": "string"
},
"count": {
"type": "integer",
"maximum": 500,
"minimum": 1
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "upload/design/part_draft: Gewinde schneiden bzw. Senkungen je Teil (Groessen aus find_hole_operations), z. B. [{type:'gewinde', size:'M6', count:4}]"
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"shipping_kind": {
"enum": [
"parcel",
"pallet"
],
"type": "string"
}
},
"additionalProperties": false
}Direkter Link fuer den Nutzer: kind 'checkout' (Warenkorb mit den Positionen, auch zum Weitergeben an Kollegen: wer den Link hat, sieht Positionen und Preis und kann bestellen), 'part' (Querschnitt mit Massen) oder 'bending' (Biegeschritte) einer Kantteil-Position (index). [Zugang: requires login: Scope quotes:read. Aendert Daten: nein.]
| Argument | Type | Description |
|---|---|---|
| kind* | string | |
| index | integer | |
| quote_id* | string |
{
"type": "object",
"required": [
"quote_id",
"kind"
],
"properties": {
"kind": {
"enum": [
"checkout",
"part",
"bending"
],
"type": "string"
},
"index": {
"type": "integer",
"maximum": 49,
"minimum": 0
},
"quote_id": {
"type": "string",
"maxLength": 40
}
},
"additionalProperties": false
}Richtpreis netto und brutto (Kanal online, gleiche Engine wie der Shop) fuer Blech-Zuschnitt (sheet_cut), Kantteil (sheet) und Halbzeug-Zuschnitt (profile), dazu Zubehoer. Alle Kosten stecken im Preis, bei delivery.mode=shipping auch Versand. Nichts wird gespeichert; verbindlich und mit Warenkorb-Link wird es mit create_quote. type 'sheet' (Kantteil) nur fuer gekantetes Blech nach Zeichnung (Schenkel + Biegungen); Profile von der Stange (Winkel 15x15x2, Flach 40x5, Rohr) sind type 'profile' mit art_nr aus find_materials. Platten/Flansche MIT Loechern: configure_plate/configure_part. Antwort enthaelt pcf_kg_co2e (CO2e-Schaetzung cradle-to-gate, je Zeile und gesamt, Methode in pcf_method). Positionen IMMER als Liste items, auch bei einer Position. Beispiel: {"items": [{"type": "sheet_cut", "material": "aluminium-almg3", "thickness_mm": 2, "length_mm": 1000, "width_mm": 500, "quantity": 2}], "delivery": {"mode": "shipping", "postal_code": "60314"}} [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]
| Argument | Type | Description |
|---|---|---|
| items* | array | |
| delivery | object | |
| include_pcf | boolean | false = ohne CO2e-Angaben (pcf_kg_co2e, pcf_method) |
{
"type": "object",
"examples": [
{
"items": [
{
"type": "sheet_cut",
"material": "aluminium-almg3",
"quantity": 2,
"width_mm": 500,
"length_mm": 1000,
"thickness_mm": 2
}
],
"delivery": {
"mode": "shipping",
"postal_code": "60314"
}
},
{
"items": [
{
"type": "sheet",
"bends": [
{
"angle_deg": 90
},
{
"angle_deg": 90
}
],
"depth_mm": 2000,
"material": "edelstahl-1.4301",
"quantity": 1,
"segments_mm": [
40,
60,
40
],
"measure_mode": "outside",
"thickness_mm": 1.5
}
]
},
{
"items": [
{
"cuts": [
{
"quantity": 4,
"length_mm": 1500
}
],
"type": "profile",
"article_nr": "4202"
}
],
"delivery": {
"mode": "pickup"
}
}
],
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"type"
],
"properties": {
"hem": {
"enum": [
"open",
"closed"
],
"type": "string",
"description": "sheet: Umschlag (Biegung unter 30 Grad) offen mit Spalt oder geschlossen zugedrueckt."
},
"cuts": {
"type": "array",
"items": {
"type": "object",
"required": [
"length_mm",
"quantity"
],
"properties": {
"quantity": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"length_mm": {
"type": "number",
"maximum": 12000,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"type": {
"enum": [
"sheet_cut",
"sheet",
"profile",
"accessory",
"upload",
"design",
"part_draft"
],
"type": "string",
"description": "sheet_cut = rechteckiger Blech-Zuschnitt; sheet = Kantteil (Schenkel + Biegungen); profile = Halbzeug-Zuschnitt; accessory = Zubehoer; upload/design = CAD-Teil, part_draft = Entwurf aus configure_part/configure_plate (nur create_quote, mit Anmeldung)"
},
"bends": {
"type": "array",
"items": {
"type": "object",
"required": [
"angle_deg"
],
"properties": {
"angle_deg": {
"type": "number",
"maximum": 180,
"exclusiveMinimum": 0
},
"direction": {
"enum": [
"up",
"down"
],
"type": "string"
},
"inner_radius_mm": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 11,
"description": "sheet: genau eine Biegung weniger als Schenkel"
},
"depth_mm": {
"type": "number",
"maximum": 12000,
"description": "sheet: Laenge der Kantung (zweite Kante)",
"exclusiveMinimum": 0
},
"draft_id": {
"type": "string",
"maxLength": 48,
"description": "part_draft: aus configure_part/configure_plate"
},
"material": {
"type": "string",
"maxLength": 64,
"description": "Werkstoff-Code aus find_materials, z. B. 'aluminium-almg3'"
},
"quantity": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"width_mm": {
"type": "number",
"maximum": 3000,
"description": "sheet_cut: Breite (schmalere Seite ab 20 mm, Tafelschere; schmalere Streifen als Laserteil ueber configure_plate)",
"exclusiveMinimum": 0
},
"design_id": {
"type": "string",
"maxLength": 40
},
"length_mm": {
"type": "number",
"maximum": 12000,
"description": "sheet_cut: Laenge",
"exclusiveMinimum": 0
},
"reference": {
"type": "string",
"maxLength": 80,
"description": "eigene Bezeichnung/Kommission"
},
"upload_id": {
"type": "string",
"maxLength": 40,
"description": "upload: aus create_upload"
},
"article_nr": {
"type": "string",
"maxLength": 32,
"description": "profile/accessory: art_nr aus find_materials"
},
"operations": {
"type": "array",
"items": {
"enum": [
"entgraten"
],
"type": "string"
}
},
"segments_mm": {
"type": "array",
"items": {
"type": "number",
"exclusiveMinimum": 0
},
"maxItems": 12,
"minItems": 1,
"description": "sheet: Schenkellaengen entlang der Kontur"
},
"measure_mode": {
"enum": [
"inside",
"outside"
],
"type": "string",
"description": "sheet: Schenkelmasse aussen (outside) oder innen (inside) gemessen. Fehlt es, gilt outside und die Position wird in der Auftragspruefung geklaert."
},
"thickness_mm": {
"type": "number",
"maximum": 100,
"exclusiveMinimum": 0
},
"visible_side": {
"enum": [
"outside",
"inside",
"any"
],
"type": "string",
"description": "sheet: Sichtseite des Kantteils (Pflicht bei Werkstoffen mit Sichtseite: geschliffen, Folie, eloxiert, lackiert, Riffel). Fehlt sie, wird sie in der Auftragspruefung geklaert."
},
"hole_operations": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"size",
"count"
],
"properties": {
"size": {
"type": "string",
"pattern": "^[Mm][0-9]{1,2}$"
},
"type": {
"enum": [
"gewinde",
"senkung"
],
"type": "string"
},
"count": {
"type": "integer",
"maximum": 500,
"minimum": 1
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "upload/design/part_draft: Gewinde schneiden bzw. Senkungen je Teil (Groessen aus find_hole_operations), z. B. [{type:'gewinde', size:'M6', count:4}]"
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"delivery": {
"type": "object",
"required": [],
"properties": {
"city": {
"type": "string",
"maxLength": 100
},
"mode": {
"enum": [
"pickup",
"shipping"
],
"type": "string"
},
"postal_code": {
"type": "string",
"maxLength": 10,
"description": "bei shipping Pflicht"
}
},
"additionalProperties": false
},
"include_pcf": {
"type": "boolean",
"default": true,
"description": "false = ohne CO2e-Angaben (pcf_kg_co2e, pcf_method)"
}
},
"additionalProperties": false
}Ein frueheres Angebot (jede Fassung) erneut lesen, mit checkout_url. [Zugang: requires login: Scope quotes:read. Aendert Daten: nein.]
| Argument | Type | Description |
|---|---|---|
| quote_id* | string | |
| include_pcf | boolean | false = ohne CO2e-Angaben (pcf_kg_co2e, pcf_method) |
{
"type": "object",
"required": [
"quote_id"
],
"properties": {
"quote_id": {
"type": "string",
"maxLength": 40
},
"include_pcf": {
"type": "boolean",
"default": true,
"description": "false = ohne CO2e-Angaben (pcf_kg_co2e, pcf_method)"
}
},
"additionalProperties": false
}Packstueck-Rechner: wie die Teile verpackt werden (Karton, Flachpaket, Bund, Palette) und was der Versand netto/brutto kostet (Richtwert; verbindlich ist der Versand in get_price/create_quote mit delivery.mode=shipping). [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]
| Argument | Type | Description |
|---|---|---|
| country | string | |
| positions* | array | |
| postal_code* | string |
{
"type": "object",
"required": [
"postal_code",
"positions"
],
"properties": {
"country": {
"enum": [
"DE"
],
"type": "string"
},
"positions": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"enum": [
"blech",
"profil",
"zubehoer"
],
"type": "string"
},
"material": {
"type": "string",
"maxLength": 64
},
"quantity": {
"type": "integer",
"maximum": 1000,
"minimum": 1
},
"width_mm": {
"type": "number",
"maximum": 3000,
"minimum": 0
},
"length_mm": {
"type": "number",
"maximum": 12000,
"minimum": 0
},
"article_nr": {
"type": "string",
"maxLength": 32
},
"thickness_mm": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"postal_code": {
"type": "string",
"maxLength": 10
}
},
"additionalProperties": false
}Bestellungen des angemeldeten Kundenkontos (wie unter /konto): Nummer, Datum, Betrag, Zahl- und Auftragsstatus, Status-Link. Nur mit OAuth-Zustimmung eines Kundenkontos. [Zugang: requires login: OAuth-Zustimmung eines Kundenkontos, Scope orders:read. Aendert Daten: nein.]
| Argument | Type | Description |
|---|---|---|
| limit | integer |
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
}
},
"additionalProperties": false
}Alle Formen des Teile-Editors (/teile-designer): Rechteck, Quadrat, Ronde, Ring, Lochkreis-Flansch, Lochplatte, Langloch-Platte, Laschen, Knotenbleche, gekantete Winkel/Wannen ... je Vorlage id, Name, Parameter (key, Einheit, min/max, Vorgabe) und ein Beispiel-Aufruf fuer configure_part. Gruppe 'anwendung': fertige Kantteile fuer den Bau (fensterbank, mauerabdeckung, attikahaube, ortgangblech, traufblech, wandanschluss, kehlblech, sockelprofil, tropfkante, abdeckwinkel = L-Winkel; wanne und kiesfangleiste ueber den Teile-Editor) mit erlaubten Werkstoffen/Staerken und aliases (Suchbegriffe wie Mauerkrone, Wetterschenkel, Eckwinkel, Attikaabdeckung). query filtert auch nach aliases ('flansch', 'fensterbank', 'mauerkrone'), group nach Gruppe. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]
| Argument | Type | Description |
|---|---|---|
| group | string | |
| query | string |
{
"type": "object",
"required": [],
"properties": {
"group": {
"enum": [
"grund",
"scheiben",
"lochbild",
"laschen",
"knoten",
"gekantet",
"anwendung"
],
"type": "string"
},
"query": {
"type": "string",
"maxLength": 80
}
},
"additionalProperties": false
}Angebote dieses Zugangs, neueste zuerst: quote_id, Datum, Ablauf, Status, Positionen, Summe, dfm_status, supersedes. Mit offset/limit blaettern. [Zugang: requires login: Scope quotes:read. Aendert Daten: nein.]
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| offset | integer |
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"offset": {
"type": "integer",
"minimum": 0
}
},
"additionalProperties": false
}Freier Werkstoff-Text (z. B. 'V2A 2mm', 'AlMg3', '1.4301 geschliffen', 'verzinkt 1,5') -> passende Blech-Werkstoffe mit 'material'-Code und Dicken. Vor get_price nutzen, wenn der Nutzer den Werkstoff frei beschreibt. Beispiel: {"query": "V2A 2mm"}. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]
| Argument | Type | Description |
|---|---|---|
| query* | string | |
| thickness_mm | number |
{
"type": "object",
"examples": [
{
"query": "V2A 2mm"
},
{
"query": "AlMg3",
"thickness_mm": 3
}
],
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"thickness_mm": {
"type": "number",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}Teile einer frueheren Bestellung des angemeldeten Kundenkontos erneut anbieten (order_id oder Nummer aus list_orders; optional parts mit part_id und quantity). Preise und Fertigbarkeit werden HEUTE neu gerechnet, nie der alte Preis. Ergebnis: Angebot mit checkout_url in den Warenkorb, KEINE Bestellung, bestellt und bezahlt wird im Browser von einem Menschen. Nur mit OAuth-Zustimmung eines Kundenkontos. [Zugang: requires login: OAuth-Zustimmung eines Kundenkontos, Scope orders:read. Aendert Daten: ja (Angebot).]
| Argument | Type | Description |
|---|---|---|
| parts | array | |
| order_id* | string | |
| include_pcf | boolean | false = ohne CO2e-Angaben (pcf_kg_co2e, pcf_method) |
| operation_key | string | Wiederholschutz: gleicher Wert beim erneuten Versuch, neuer Wert bei geaenderten Eingaben. |
{
"type": "object",
"required": [
"order_id"
],
"properties": {
"parts": {
"type": "array",
"items": {
"type": "object",
"required": [
"part_id"
],
"properties": {
"part_id": {
"type": "string",
"pattern": "^[0-9a-f]+$",
"maxLength": 40
},
"quantity": {
"type": "integer",
"maximum": 10000,
"minimum": 1
}
},
"additionalProperties": false
},
"maxItems": 50
},
"order_id": {
"type": "string",
"maxLength": 80
},
"include_pcf": {
"type": "boolean",
"default": true,
"description": "false = ohne CO2e-Angaben (pcf_kg_co2e, pcf_method)"
},
"operation_key": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]*$",
"maxLength": 64,
"description": "Wiederholschutz: gleicher Wert beim erneuten Versuch, neuer Wert bei geaenderten Eingaben."
}
},
"additionalProperties": false
}Sucht in Magazin, Konstruktionsrichtlinien, FAQ, Preis-, Versand- und Werkstoffseiten. Mit path statt query wird eine Seite vollstaendig gelesen (path aus einem Treffer). [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]
| Argument | Type | Description |
|---|---|---|
| path | string | |
| limit | integer | |
| query | string | |
| section | string |
{
"type": "object",
"required": [],
"properties": {
"path": {
"type": "string",
"maxLength": 120
},
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 200
},
"section": {
"type": "string",
"maxLength": 40
}
},
"additionalProperties": false
}Mengen aendern, Positionen entfernen (remove) oder ergaenzen (add_items). Ergebnis ist ein NEUES Angebot mit eigener quote_id und supersedes; das alte bleibt unveraendert abrufbar. index = lines[].index des Angebots. [Zugang: requires login: Scope quotes:write. Aendert Daten: ja (neue Angebotsfassung).]
| Argument | Type | Description |
|---|---|---|
| changes | array | |
| delivery | object | |
| quote_id* | string | |
| add_items | array | |
| include_pcf | boolean | false = ohne CO2e-Angaben (pcf_kg_co2e, pcf_method) |
| operation_key | string | Wiederholschutz: gleicher Wert beim erneuten Versuch, neuer Wert bei geaenderten Eingaben. |
{
"type": "object",
"required": [
"quote_id"
],
"properties": {
"changes": {
"type": "array",
"items": {
"type": "object",
"required": [
"index"
],
"properties": {
"index": {
"type": "integer",
"maximum": 49,
"minimum": 0
},
"remove": {
"type": "boolean"
},
"quantity": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"reference": {
"type": "string",
"maxLength": 80
}
},
"additionalProperties": false
},
"maxItems": 50
},
"delivery": {
"type": "object",
"required": [],
"properties": {
"city": {
"type": "string",
"maxLength": 100
},
"mode": {
"enum": [
"pickup",
"shipping"
],
"type": "string"
},
"postal_code": {
"type": "string",
"maxLength": 10,
"description": "bei shipping Pflicht"
}
},
"additionalProperties": false
},
"quote_id": {
"type": "string",
"maxLength": 40
},
"add_items": {
"type": "array",
"items": {
"type": "object",
"required": [
"type"
],
"properties": {
"hem": {
"enum": [
"open",
"closed"
],
"type": "string",
"description": "sheet: Umschlag (Biegung unter 30 Grad) offen mit Spalt oder geschlossen zugedrueckt."
},
"cuts": {
"type": "array",
"items": {
"type": "object",
"required": [
"length_mm",
"quantity"
],
"properties": {
"quantity": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"length_mm": {
"type": "number",
"maximum": 12000,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"type": {
"enum": [
"sheet_cut",
"sheet",
"profile",
"accessory",
"upload",
"design",
"part_draft"
],
"type": "string",
"description": "sheet_cut = rechteckiger Blech-Zuschnitt; sheet = Kantteil (Schenkel + Biegungen); profile = Halbzeug-Zuschnitt; accessory = Zubehoer; upload/design = CAD-Teil, part_draft = Entwurf aus configure_part/configure_plate (nur create_quote, mit Anmeldung)"
},
"bends": {
"type": "array",
"items": {
"type": "object",
"required": [
"angle_deg"
],
"properties": {
"angle_deg": {
"type": "number",
"maximum": 180,
"exclusiveMinimum": 0
},
"direction": {
"enum": [
"up",
"down"
],
"type": "string"
},
"inner_radius_mm": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 11,
"description": "sheet: genau eine Biegung weniger als Schenkel"
},
"depth_mm": {
"type": "number",
"maximum": 12000,
"description": "sheet: Laenge der Kantung (zweite Kante)",
"exclusiveMinimum": 0
},
"draft_id": {
"type": "string",
"maxLength": 48,
"description": "part_draft: aus configure_part/configure_plate"
},
"material": {
"type": "string",
"maxLength": 64,
"description": "Werkstoff-Code aus find_materials, z. B. 'aluminium-almg3'"
},
"quantity": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"width_mm": {
"type": "number",
"maximum": 3000,
"description": "sheet_cut: Breite (schmalere Seite ab 20 mm, Tafelschere; schmalere Streifen als Laserteil ueber configure_plate)",
"exclusiveMinimum": 0
},
"design_id": {
"type": "string",
"maxLength": 40
},
"length_mm": {
"type": "number",
"maximum": 12000,
"description": "sheet_cut: Laenge",
"exclusiveMinimum": 0
},
"reference": {
"type": "string",
"maxLength": 80,
"description": "eigene Bezeichnung/Kommission"
},
"upload_id": {
"type": "string",
"maxLength": 40,
"description": "upload: aus create_upload"
},
"article_nr": {
"type": "string",
"maxLength": 32,
"description": "profile/accessory: art_nr aus find_materials"
},
"operations": {
"type": "array",
"items": {
"enum": [
"entgraten"
],
"type": "string"
}
},
"segments_mm": {
"type": "array",
"items": {
"type": "number",
"exclusiveMinimum": 0
},
"maxItems": 12,
"minItems": 1,
"description": "sheet: Schenkellaengen entlang der Kontur"
},
"measure_mode": {
"enum": [
"inside",
"outside"
],
"type": "string",
"description": "sheet: Schenkelmasse aussen (outside) oder innen (inside) gemessen. Fehlt es, gilt outside und die Position wird in der Auftragspruefung geklaert."
},
"thickness_mm": {
"type": "number",
"maximum": 100,
"exclusiveMinimum": 0
},
"visible_side": {
"enum": [
"outside",
"inside",
"any"
],
"type": "string",
"description": "sheet: Sichtseite des Kantteils (Pflicht bei Werkstoffen mit Sichtseite: geschliffen, Folie, eloxiert, lackiert, Riffel). Fehlt sie, wird sie in der Auftragspruefung geklaert."
},
"hole_operations": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"size",
"count"
],
"properties": {
"size": {
"type": "string",
"pattern": "^[Mm][0-9]{1,2}$"
},
"type": {
"enum": [
"gewinde",
"senkung"
],
"type": "string"
},
"count": {
"type": "integer",
"maximum": 500,
"minimum": 1
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "upload/design/part_draft: Gewinde schneiden bzw. Senkungen je Teil (Groessen aus find_hole_operations), z. B. [{type:'gewinde', size:'M6', count:4}]"
}
},
"additionalProperties": false
},
"maxItems": 50
},
"include_pcf": {
"type": "boolean",
"default": true,
"description": "false = ohne CO2e-Angaben (pcf_kg_co2e, pcf_method)"
},
"operation_key": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]*$",
"maxLength": 64,
"description": "Wiederholschutz: gleicher Wert beim erneuten Versuch, neuer Wert bei geaenderten Eingaben."
}
},
"additionalProperties": false
}Stand eines Uploads aus create_upload: waiting (Link offen, noch keine Datei), received (Datei da, weiter mit create_quote), expired (neuen Link holen). Hoechstens alle 10 Sekunden abfragen. [Zugang: requires login: Scope designs:write. Aendert Daten: nein.]
| Argument | Type | Description |
|---|---|---|
| upload_id* | string |
{
"type": "object",
"required": [
"upload_id"
],
"properties": {
"upload_id": {
"type": "string",
"maxLength": 40
}
},
"additionalProperties": false
}Fuer wen spricht dieser Zugang, welche Rechte gelten? [Zugang: requires login: Scope catalog:read. Aendert Daten: nein.]
No arguments.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 7, 2026.
{
"type": "object",
"required": [],
"properties": {
"part": {
"type": "object",
"required": [
"depth_mm",
"segments_mm"
],
"properties": {
"bends": {
"type": "array",
"items": {
"type": "object",
"required": [
"angle_deg"
],
"properties": {
"angle_deg": {
"type": "number",
"maximum": 180,
"exclusiveMinimum": 0
},
"direction": {
"enum": [
"up",
"down"
],
"type": "string"
},
"inner_radius_mm": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 11,
"description": "sheet: genau eine Biegung weniger als Schenkel"
},
"depth_mm": {
"type": "number",
"maximum": 12000,
"exclusiveMinimum": 0
},
"quantity": {
"type": "integer",
"maximum": 10000,
"minimum": 1,
"description": "Menge fuer price_effect_net (Standard 1)"
},
"segments_mm": {
"type": "array",
"items": {
"type": "number"
},
"maxItems": 12,
"minItems": 1
}
},
"additionalProperties": false
},
"material": {
"type": "string",
"maxLength": 64
},
"design_id": {
"type": "string",
"maxLength": 40
},
"upload_id": {
"type": "string",
"maxLength": 40
},
"thickness_mm": {
"type": "number",
"maximum": 100,
"exclusiveMinimum": 0
},
"tolerance_mm": {
"type": "number",
"maximum": 10,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}| string |
| extra_holes | array |
| thickness_mm* | number |
| corner_radius_mm | number |
{
"type": "object",
"required": [
"template",
"material",
"thickness_mm"
],
"properties": {
"name": {
"type": "string",
"maxLength": 80
},
"params": {
"type": "object",
"description": "Werte je Parameter-key der Vorlage (fehlende = Vorgabe)",
"additionalProperties": {
"type": "number"
}
},
"delivery": {
"type": "object",
"required": [],
"properties": {
"city": {
"type": "string",
"maxLength": 100
},
"mode": {
"enum": [
"pickup",
"shipping"
],
"type": "string"
},
"postal_code": {
"type": "string",
"maxLength": 10,
"description": "bei shipping Pflicht"
}
},
"additionalProperties": false
},
"material": {
"type": "string",
"maxLength": 64
},
"quantity": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"template": {
"type": "string",
"maxLength": 40
},
"extra_holes": {
"type": "array",
"items": {
"type": "object",
"required": [
"x_mm",
"y_mm",
"diameter_mm"
],
"properties": {
"x_mm": {
"type": "number"
},
"y_mm": {
"type": "number"
},
"diameter_mm": {
"type": "number",
"maximum": 2000,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"maxItems": 150
},
"thickness_mm": {
"type": "number",
"maximum": 100,
"exclusiveMinimum": 0
},
"corner_radius_mm": {
"type": "number",
"maximum": 1000,
"minimum": 0
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"length_mm",
"width_mm",
"material",
"thickness_mm"
],
"properties": {
"name": {
"type": "string",
"maxLength": 80
},
"holes": {
"type": "array",
"items": {
"type": "object",
"required": [
"x_mm",
"y_mm",
"diameter_mm"
],
"properties": {
"x_mm": {
"type": "number"
},
"y_mm": {
"type": "number"
},
"diameter_mm": {
"type": "number",
"maximum": 2000,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"maxItems": 150
},
"delivery": {
"type": "object",
"required": [],
"properties": {
"city": {
"type": "string",
"maxLength": 100
},
"mode": {
"enum": [
"pickup",
"shipping"
],
"type": "string"
},
"postal_code": {
"type": "string",
"maxLength": 10,
"description": "bei shipping Pflicht"
}
},
"additionalProperties": false
},
"material": {
"type": "string",
"maxLength": 64
},
"quantity": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"width_mm": {
"type": "number",
"maximum": 1500,
"exclusiveMinimum": 0
},
"length_mm": {
"type": "number",
"maximum": 3000,
"exclusiveMinimum": 0
},
"thickness_mm": {
"type": "number",
"maximum": 100,
"exclusiveMinimum": 0
},
"corner_radius_mm": {
"type": "number",
"maximum": 1000,
"minimum": 0
}
},
"additionalProperties": false
}| breite_mm | number | Halbzeug: genau dieses Mass breite in mm (+-0,05) |
| kategorie | string | Halbzeug-Form (Teiltext), z. B. Flachstange, Rundstange, Rundrohr, Winkel, Vierkantstange, Vierkantrohr, U-Profil, Rechteckrohr, Sechskantstange, T-Profil, Z-Profil, HEB-Traeger. Die Antwort nennt unter facets alle Formen. |
| werkstoff | string | Halbzeug-Werkstoff, z. B. 'aluminium', 'edelstahl', '1.4301', 'V2A', 'messing', 'stahl' |
| laser_only | boolean |
| thickness_mm | number | nur Bleche mit dieser Dicke |
| schenkel_a_mm | number | Halbzeug: genau dieses Mass schenkel_a in mm (+-0,05) |
| schenkel_b_mm | number | Halbzeug: genau dieses Mass schenkel_b in mm (+-0,05) |
| durchmesser_mm | number | Halbzeug: genau dieses Mass durchmesser in mm (+-0,05) |
| wandstaerke_mm | number | Halbzeug: genau dieses Mass wandstaerke in mm (+-0,05) |
| schluesselweite_mm | number | Halbzeug: genau dieses Mass schluesselweite in mm (+-0,05) |
| aussendurchmesser_mm | number | Halbzeug: genau dieses Mass aussendurchmesser in mm (+-0,05) |
{
"type": "object",
"examples": [
{
"query": "flach 20x5 alu"
},
{
"kind": "halbzeug",
"ranges": {
"breite_mm": {
"max": 50,
"min": 30
}
},
"kategorie": "U-Profil",
"werkstoff": "edelstahl"
},
{
"kind": "blech",
"query": "edelstahl",
"thickness_mm": 2
}
],
"required": [],
"properties": {
"kind": {
"enum": [
"alle",
"blech",
"halbzeug"
],
"type": "string"
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 120
},
"offset": {
"type": "integer",
"minimum": 0
},
"ranges": {
"type": "object",
"properties": {
"dicke_mm": {
"type": "object",
"required": [],
"properties": {
"max": {
"type": "number",
"minimum": 0
},
"min": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"hoehe_mm": {
"type": "object",
"required": [],
"properties": {
"max": {
"type": "number",
"minimum": 0
},
"min": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"breite_mm": {
"type": "object",
"required": [],
"properties": {
"max": {
"type": "number",
"minimum": 0
},
"min": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"schenkel_a_mm": {
"type": "object",
"required": [],
"properties": {
"max": {
"type": "number",
"minimum": 0
},
"min": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"schenkel_b_mm": {
"type": "object",
"required": [],
"properties": {
"max": {
"type": "number",
"minimum": 0
},
"min": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"durchmesser_mm": {
"type": "object",
"required": [],
"properties": {
"max": {
"type": "number",
"minimum": 0
},
"min": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"wandstaerke_mm": {
"type": "object",
"required": [],
"properties": {
"max": {
"type": "number",
"minimum": 0
},
"min": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"schluesselweite_mm": {
"type": "object",
"required": [],
"properties": {
"max": {
"type": "number",
"minimum": 0
},
"min": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"aussendurchmesser_mm": {
"type": "object",
"required": [],
"properties": {
"max": {
"type": "number",
"minimum": 0
},
"min": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
},
"description": "Halbzeug: Massbereiche, z. B. {\"breite_mm\": {\"min\": 30, \"max\": 50}}. Schluessel wie die Einzelmasse.",
"additionalProperties": false
},
"dicke_mm": {
"type": "number",
"description": "Halbzeug: genau dieses Mass dicke in mm (+-0,05)",
"exclusiveMinimum": 0
},
"hoehe_mm": {
"type": "number",
"description": "Halbzeug: genau dieses Mass hoehe in mm (+-0,05)",
"exclusiveMinimum": 0
},
"breite_mm": {
"type": "number",
"description": "Halbzeug: genau dieses Mass breite in mm (+-0,05)",
"exclusiveMinimum": 0
},
"kategorie": {
"type": "string",
"maxLength": 40,
"description": "Halbzeug-Form (Teiltext), z. B. Flachstange, Rundstange, Rundrohr, Winkel, Vierkantstange, Vierkantrohr, U-Profil, Rechteckrohr, Sechskantstange, T-Profil, Z-Profil, HEB-Traeger. Die Antwort nennt unter facets alle Formen."
},
"werkstoff": {
"type": "string",
"maxLength": 40,
"description": "Halbzeug-Werkstoff, z. B. 'aluminium', 'edelstahl', '1.4301', 'V2A', 'messing', 'stahl'"
},
"laser_only": {
"type": "boolean"
},
"thickness_mm": {
"type": "number",
"maximum": 100,
"description": "nur Bleche mit dieser Dicke",
"exclusiveMinimum": 0
},
"schenkel_a_mm": {
"type": "number",
"description": "Halbzeug: genau dieses Mass schenkel_a in mm (+-0,05)",
"exclusiveMinimum": 0
},
"schenkel_b_mm": {
"type": "number",
"description": "Halbzeug: genau dieses Mass schenkel_b in mm (+-0,05)",
"exclusiveMinimum": 0
},
"durchmesser_mm": {
"type": "number",
"description": "Halbzeug: genau dieses Mass durchmesser in mm (+-0,05)",
"exclusiveMinimum": 0
},
"wandstaerke_mm": {
"type": "number",
"description": "Halbzeug: genau dieses Mass wandstaerke in mm (+-0,05)",
"exclusiveMinimum": 0
},
"schluesselweite_mm": {
"type": "number",
"description": "Halbzeug: genau dieses Mass schluesselweite in mm (+-0,05)",
"exclusiveMinimum": 0
},
"aussendurchmesser_mm": {
"type": "number",
"description": "Halbzeug: genau dieses Mass aussendurchmesser in mm (+-0,05)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}