{"x402Version":2,"type":"bazaar-listing","service":{"name":"HALOWERK handelswerk","url":"https://handel.halowerk.com","version":"1.0.0","icon":"https://handel.halowerk.com/favicon.svg"},"items":[{"id":"handelswerk.local_business","name":"local_business","title":"Find businesses of a given trade around a coordinate, with address, opening hours, contact details and distance, sourced from OpenStreetMap.","description":"Searches OpenStreetMap through Overpass for businesses of a chosen trade within a radius of a coordinate, and returns each with its name, address, opening hours, phone, website, and the distance from your point, sorted nearest first. Around thirty trades are mapped to the OSM tags that actually hold them, because OSM is indexed by tags and not by free text — a plain word search finds almost nothing there. Coverage is what volunteers have mapped: dense in cities, thin in rural areas, and a business absent here may simply never have been entered, which is stated rather than presented as an empty market. Overpass rejects requests over quota with a normal-looking empty answer; that case is detected and reported as an upstream condition instead of being passed off as no results. Data is ODbL and attribution is required on any reuse.","category":"handelswerk","keywords":[],"resource":"https://handel.halowerk.com/v1/local-business","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["latitude","longitude","trade"],"additionalProperties":false,"properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"description":"Centre latitude."},"longitude":{"type":"number","minimum":-180,"maximum":180,"description":"Centre longitude."},"trade":{"type":"string","enum":["bakery","butcher","supermarket","restaurant","cafe","bar","pharmacy","doctor","dentist","hotel","bank","atm","fuel","car_repair","hairdresser","hardware","electronics","clothes","bookshop","florist","optician","veterinary","school","kindergarten","post_office","laundry","bicycle","craft","office","any_shop"],"description":"Which trade to search for."},"radius_km":{"type":"number","minimum":0.1,"maximum":25,"default":2,"description":"Search radius in kilometres."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"How many results."},"require_name":{"type":"boolean","default":true,"description":"Skip entries with no name — unnamed points are rarely useful."},"open_now_only":{"type":"boolean","default":false,"description":"Only entries that declare opening hours (the hours are returned, not evaluated)."}}},"outputSchema":{"type":"object"},"price":{"amount":"5000","currency":"USDC","decimals":6,"human":"0.005 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"5000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"handelswerk.landed_cost","name":"landed_cost","title":"Work out the full landed cost of an import — goods, freight, insurance, duty and import VAT — with the duty rate looked up in the official UK or US tariff.","description":"Computes what an import actually costs at the destination. The customs value is assembled from goods, freight and insurance on the chosen basis (CIF or FOB), duty is applied to it, and import VAT is applied to the duty-inclusive value, which is the ordering most calculations get wrong. Duty rates come from the live tariff: the UK Trade Tariff for GB and the USITC HTS for the US, with the commodity description returned so a wrong classification is visible. For EU destinations only import VAT is computed — TARIC publishes no usable API, and rather than invent a duty rate the duty component is returned as null and flagged as outstanding, which is the honest state of the data. Reduced VAT rates, preferential origin, anti-dumping measures and quotas are not applied; a customs broker is not replaced.","category":"handelswerk","keywords":[],"resource":"https://handel.halowerk.com/v1/landed-cost","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["hs_code","destination_country","goods_value"],"additionalProperties":false,"properties":{"hs_code":{"type":"string","minLength":4,"maxLength":14,"description":"Commodity code. UK wants 10 digits, US 8 to 10."},"destination_country":{"type":"string","minLength":2,"maxLength":2,"description":"ISO country code of the destination."},"origin_country":{"type":"string","minLength":2,"maxLength":2,"description":"ISO country code of origin, for context."},"goods_value":{"type":"number","minimum":0,"description":"Goods value in the given currency."},"freight_cost":{"type":"number","minimum":0,"default":0,"description":"Freight to the border."},"insurance_cost":{"type":"number","minimum":0,"default":0,"description":"Insurance."},"currency":{"type":"string","minLength":3,"maxLength":3,"default":"EUR","description":"Currency of all amounts. No conversion is done."},"valuation_basis":{"type":"string","enum":["CIF","FOB"],"default":"CIF","description":"CIF includes freight and insurance in the customs value, FOB does not."}}},"outputSchema":{"type":"object"},"price":{"amount":"2000","currency":"USDC","decimals":6,"human":"0.002 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"2000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"handelswerk.vat_resolve","name":"vat_resolve","title":"Validate an EU VAT number against VIES and determine the applicable rate or reverse-charge treatment for a supply between two countries.","description":"Two answers in one call. Validation: the number is checked against the VIES service of the member state that issued it, with the consultation date returned. Treatment: given the supplier country, the customer country and whether the customer is a business, it states whether the supply is domestic with the local rate, an intra-community B2B supply where the reverse charge shifts the liability to the customer, a B2C supply taxed where the customer sits, or an export outside the EU. VIES returns the trader name and address masked as three dashes unless a requester VAT number is supplied; that placeholder is never passed through — the fields come back as null with the reason stated, because a dash string in a name field silently poisons whatever consumes it. Standard rates only, with their effective date: reduced rates depend on the goods and would be guesswork without a tariff code. Not tax advice.","category":"handelswerk","keywords":[],"resource":"https://handel.halowerk.com/v1/vat-resolve","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["vat_number"],"additionalProperties":false,"properties":{"vat_number":{"type":"string","minLength":4,"maxLength":20,"description":"VAT number with country prefix, e.g. DE811907980."},"supplier_country":{"type":"string","minLength":2,"maxLength":2,"description":"ISO country code of the supplier, for the treatment question."},"customer_is_business":{"type":"boolean","default":true,"description":"Whether the customer is a business (B2B) or a consumer (B2C)."},"supply_type":{"type":"string","enum":["goods","services","digital_services"],"default":"goods","description":"What is being supplied."}}},"outputSchema":{"type":"object"},"price":{"amount":"2000","currency":"USDC","decimals":6,"human":"0.002 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"2000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"handelswerk.invoice_audit","name":"invoice_audit","title":"Recompute an invoice from its line items: totals, tax per rate, discounts and rounding, and report every deviation with the exact amount.","description":"Rebuilds an invoice from its lines and compares the result with the stated totals. Line by line it checks quantity times unit price against the line total, applies line and document discounts in the right order, groups the net amounts by tax rate and computes the tax per group, then compares net, tax and gross with what the document claims. All arithmetic runs in whole cents, because adding decimal amounts as floating point produces cent-level noise that reads like an error by the issuer when it is an error by the checker. Rounding differences up to one cent per tax group are reported separately from real discrepancies. It also checks the formal side: a due date before the invoice date, a tax rate that is not one of the country standard rates, a negative line without a credit-note marker, and a missing VAT number where the reverse charge is claimed.","category":"handelswerk","keywords":[],"resource":"https://handel.halowerk.com/v1/invoice-audit","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["lines"],"additionalProperties":false,"properties":{"lines":{"type":"array","minItems":1,"maxItems":500,"description":"The invoice lines.","items":{"type":"object","required":["quantity","unit_price"],"additionalProperties":false,"properties":{"description":{"type":"string","maxLength":300},"quantity":{"type":"number"},"unit_price":{"type":"number"},"line_total":{"type":"number","description":"The stated line total. Recomputed if absent."},"tax_rate":{"type":"number","minimum":0,"maximum":100,"description":"Tax rate in percent for this line."},"discount_pct":{"type":"number","minimum":0,"maximum":100,"description":"Discount on this line in percent."}}}},"stated_net":{"type":"number","description":"Net total as stated on the invoice."},"stated_tax":{"type":"number","description":"Tax total as stated."},"stated_gross":{"type":"number","description":"Gross total as stated."},"document_discount_pct":{"type":"number","minimum":0,"maximum":100,"description":"Discount on the whole document, applied after line discounts."},"default_tax_rate":{"type":"number","minimum":0,"maximum":100,"description":"Tax rate for lines that do not carry one."},"currency":{"type":"string","minLength":3,"maxLength":3,"default":"EUR"},"invoice_date":{"type":"string","maxLength":10,"description":"Invoice date as YYYY-MM-DD."},"due_date":{"type":"string","maxLength":10,"description":"Due date as YYYY-MM-DD."},"reverse_charge":{"type":"boolean","default":false,"description":"Whether the invoice claims the reverse charge."},"customer_vat_number":{"type":"string","maxLength":20,"description":"Customer VAT number, required for the reverse charge."},"country":{"type":"string","minLength":2,"maxLength":2,"description":"Country whose standard rates the tax rates are checked against."}}},"outputSchema":{"type":"object"},"price":{"amount":"2000","currency":"USDC","decimals":6,"human":"0.002 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"2000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"handelswerk.po_invoice_match","name":"po_invoice_match","title":"Three-way match of purchase order, delivery note and invoice: quantities, prices and totals per line, with over-delivery, over-billing and unmatched lines named.","description":"Compares a purchase order against a delivery note and an invoice, line by line. Lines are paired by article number where both sides carry one, and otherwise by text similarity — a text pairing is marked as such with its similarity score, because quietly matching on similar wording is exactly how a wrong invoice gets approved. Per pair it reports the ordered, delivered and invoiced quantity, the agreed and invoiced unit price, and flags the four cases that matter: invoiced more than delivered, delivered more than ordered, a unit price above the order beyond your tolerance, and a line on the invoice with no counterpart at all. Tolerances for quantity and price are yours to set. All arithmetic runs in whole cents. It compares the documents you supply and knows nothing about what was actually agreed or received.","category":"handelswerk","keywords":[],"resource":"https://handel.halowerk.com/v1/po-invoice-match","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["purchase_order","invoice"],"additionalProperties":false,"properties":{"purchase_order":{"type":"array","minItems":1,"maxItems":300,"description":"Ordered lines.","items":{"type":"object","required":["quantity"],"additionalProperties":false,"properties":{"sku":{"type":"string","maxLength":100},"description":{"type":"string","maxLength":300},"quantity":{"type":"number"},"unit_price":{"type":"number"}}}},"delivery_note":{"type":"array","maxItems":300,"description":"Delivered lines. Optional — without it only a two-way match runs.","items":{"type":"object","required":["quantity"],"additionalProperties":false,"properties":{"sku":{"type":"string","maxLength":100},"description":{"type":"string","maxLength":300},"quantity":{"type":"number"}}}},"invoice":{"type":"array","minItems":1,"maxItems":300,"description":"Invoiced lines.","items":{"type":"object","required":["quantity"],"additionalProperties":false,"properties":{"sku":{"type":"string","maxLength":100},"description":{"type":"string","maxLength":300},"quantity":{"type":"number"},"unit_price":{"type":"number"}}}},"quantity_tolerance_pct":{"type":"number","minimum":0,"maximum":50,"default":0,"description":"Allowed quantity deviation in percent."},"price_tolerance_pct":{"type":"number","minimum":0,"maximum":50,"default":0,"description":"Allowed unit-price deviation in percent."},"text_match_threshold":{"type":"number","minimum":0.1,"maximum":1,"default":0.5,"description":"Minimum text similarity to pair lines without an article number."},"currency":{"type":"string","minLength":3,"maxLength":3,"default":"EUR"}}},"outputSchema":{"type":"object"},"price":{"amount":"2000","currency":"USDC","decimals":6,"human":"0.002 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"2000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"handelswerk.gtin_resolve","name":"gtin_resolve","title":"Resolve an EAN, UPC or GTIN to product, brand and packaging, with the check digit verified first and the issuing country prefix decoded.","description":"Looks up a barcode number across Open Food Facts and a general product database, returning product name, brand, category, packaging, quantity and images where present. The check digit is computed locally before anything is queried: an invalid number is a typo, and reporting it as not found would send the caller looking in the wrong place. The GS1 country prefix is decoded and labelled for what it is — where the number was issued, not where the product was made, a distinction that is routinely confused. A prefix in the 2 range is flagged as an in-store number that exists only at the retailer who assigned it and is registered nowhere. Sources are named per field so a food entry from the open database is distinguishable from a general catalogue entry. Coverage is uneven: food is well covered, general goods much less, and absence is not evidence the product does not exist.","category":"handelswerk","keywords":[],"resource":"https://handel.halowerk.com/v1/gtin-resolve","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["gtin"],"additionalProperties":false,"properties":{"gtin":{"type":"string","minLength":8,"maxLength":14,"description":"EAN-8, EAN-13, UPC-A or GTIN-14."},"sources":{"type":"array","items":{"type":"string","enum":["openfoodfacts","upcitemdb"]},"description":"Which sources to query. Both if omitted."},"skip_checksum":{"type":"boolean","default":false,"description":"Query even when the check digit is wrong."}}},"outputSchema":{"type":"object"},"price":{"amount":"5000","currency":"USDC","decimals":6,"human":"0.005 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"5000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]}],"capability_request":{"url":"https://bedarf.halowerk.com/capabilities/request","method":"POST","cost":"free","description":"Missing a capability, or does the scope not fit? Report the need here - no payment required. Similar reports are bundled; the response returns an id you can check back on.","body_example":{"requested_capability":"short label","description":"what exactly is needed","max_price":0.01}},"updated_at":"2026-08-11T13:42:44.233Z"}