eudr
What this MCP does
Checks plot-level forest-loss evidence and compiles, signs, audits, exports, and tracks EU Deforestation Regulation due diligence statements and supplier evidence.
Tools
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['organisation', 'balance_credits', 'credits_per_analysis', 'analyses_remaining', 'charged_unit', 'free_of_charge'], 'properties': {'note': {'type': 'string'}, 'charged_unit': {'type': 'string'}, 'organisation': {'type': 'string'}, 'credits_spent': {'type': 'integer'}, 'free_of_charge': {'type': 'array', 'items': {'type': 'string'}}, 'balance_credits': {'type': 'integer'}, 'recent_activity': {'type': 'array', 'items': {'type': 'object'}}, 'credits_received': {'type': 'integer'}, 'analyses_remaining': {'type': 'integer'}, 'credits_per_analysis': {'type': 'integer'}, 'per_plot_pricing_from': {'type': 'string', 'format': 'date'}, 'credits_per_extra_plot': {'type': 'integer', 'description': 'Added for each plot after the first, from per_plot_pricing_from.'}, 'welcome_credits_granted_at': {'type': ['string', 'null']}}}
Input schema
{'type': 'object', 'required': ['suppliers'], 'properties': {'suppliers': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Your reference for the supplier.'}, 'name': {'type': 'string', 'description': "Supplier's legal or trading name."}, 'email': {'type': 'string', 'description': 'Email address (Article 9(1)(e)).'}, 'address': {'type': 'string', 'description': 'Postal address (Article 9(1)(e)).'}, 'hs_code': {'type': 'string'}, 'commodity': {'enum': ['cattle', 'cocoa', 'coffee', 'oil_palm', 'rubber', 'soya', 'wood'], 'type': 'string'}, 'quantity_kg': {'type': 'number', 'minimum': 0}, 'plots_declared': {'type': 'integer', 'minimum': 0, 'description': 'How many plots the supplier says the goods come from.'}, 'scientific_name': {'type': 'string', 'description': 'Required for wood under Article 9(1)(a).'}, 'legality_documents': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Legality documents held. Recognised slugs: land_use_rights, environmental_permit, forest_permit, third_party_rights, fpic, labour_compliance, tax_and_trade.'}, 'subnational_region': {'type': 'string'}, 'product_description': {'type': 'string'}, 'country_of_production': {'type': 'string', 'pattern': '^[A-Za-z]{2}$', 'description': 'ISO-3166-1 alpha-2.'}, 'production_date_range': {'type': 'string', 'description': 'Harvest or production dates, ideally YYYY-MM-DD/YYYY-MM-DD.'}, 'deforestation_evidence': {'type': 'array', 'items': {'type': 'string'}, 'description': 'References to evidence already held, such as an evidence_cid or a receipt CID.'}, 'plots_with_geolocation': {'type': 'integer', 'minimum': 0, 'description': 'How many of those you hold coordinates for.'}}, 'additionalProperties': False}, 'maxItems': 50, 'minItems': 1}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['checked', 'incomplete', 'blocked_from_filing', 'summary', 'suppliers', 'basis', 'scope_note'], 'properties': {'basis': {'type': 'string'}, 'checked': {'type': 'integer'}, 'summary': {'type': 'string'}, 'suppliers': {'type': 'array', 'items': {'type': 'object'}, 'description': 'One row per supplier: status, gaps with their article limb and the request to send, blocking_gaps, held limbs, country tier.'}, 'incomplete': {'type': 'integer'}, 'scope_note': {'type': 'string'}, 'blocked_from_filing': {'type': 'integer'}}}
Input schema
{'type': 'object', 'required': ['commodity', 'country'], 'properties': {'plots': {'type': 'array', 'items': {'type': 'object', 'required': ['geojson'], 'properties': {'geojson': {'type': 'object', 'description': 'GeoJSON Polygon, MultiPolygon or Point in WGS84.'}, 'plot_id': {'type': 'string', 'maxLength': 64, 'description': 'Your identifier for the plot, echoed on its verdict row. Letters, digits and -_.: only.'}}, 'additionalProperties': False}, 'maxItems': 25, 'minItems': 1, 'description': 'Several plots checked together, each keeping its own verdict. Use this when a consignment draws on more than one plot.'}, 'country': {'type': 'string', 'pattern': '^[A-Za-z]{2}$', 'description': 'ISO-3166-1 alpha-2 code of the country of production. It sets the benchmark risk tier.'}, 'geojson': {'type': 'object', 'description': 'One plot, as a GeoJSON Polygon, MultiPolygon or Point in WGS84 (EPSG:4326). Article 2(28) requires six decimal places. A Point is admissible only for a plot under four hectares that is not forest. Supply this or `plots`.'}, 'hs_code': {'type': 'string', 'description': 'Optional HS code, 2 to 8 digits. Overrides the commodity-to-Annex-I mapping.'}, 'commodity': {'enum': ['cattle', 'cocoa', 'coffee', 'oil_palm', 'rubber', 'soya', 'wood'], 'type': 'string', 'description': 'The Annex I commodity produced on the plot.'}, 'quantity_kg': {'type': 'number', 'minimum': 0, 'description': 'Optional net mass of the consignment. It does not affect the verdict.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['finding', 'deforestation_free', 'verdict', 'cut_off_date', 'per_plot', 'coverage', 'observed', 'unresolved_checks', 'scope_note', 'next_action', 'evidence', 'engine'], 'properties': {'engine': {'type': 'string'}, 'finding': {'type': 'string'}, 'verdict': {'enum': ['negligible', 'non_negligible', 'not_in_scope', 'indeterminate'], 'type': 'string'}, 'coverage': {'type': 'object'}, 'evidence': {'type': 'object', 'required': ['evidence_cid', 'fact_count'], 'properties': {'algorithm': {'type': ['string', 'null']}, 'verify_at': {'type': 'string'}, 'fact_count': {'type': 'integer'}, 'fetch_with': {'type': 'string'}, 'evidence_cid': {'type': ['string', 'null']}, 'responder_pubkey_b32': {'type': ['string', 'null']}}, 'description': 'fact_count is always present. It is a count of facts that exist, not of facts shipped: the conversational surface carries the address rather than the list.'}, 'observed': {'type': 'object'}, 'per_plot': {'type': 'array', 'items': {'type': 'object'}}, 'risk_score': {'type': ['number', 'null']}, 'scope_note': {'type': 'string'}, 'next_action': {'type': 'string'}, 'cut_off_date': {'type': 'string'}, 'country_risk_tier': {'type': 'string'}, 'unresolved_checks': {'type': 'array', 'items': {'type': 'string'}}, 'deforestation_free': {'type': 'boolean'}}}
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['organisation', 'totals', 'by_commodity', 'by_country', 'supplier_requests', 'scope_note', 'next_action'], 'properties': {'totals': {'type': 'object'}, 'by_country': {'type': 'array', 'items': {'type': 'object'}}, 'scope_note': {'type': 'string'}, 'next_action': {'type': 'string'}, 'by_commodity': {'type': 'array', 'items': {'type': 'object'}}, 'organisation': {'type': 'string'}, 'supplier_requests': {'type': 'object'}}}
Input schema
{'type': 'object', 'required': ['name'], 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90}, 'lon': {'type': 'number', 'maximum': 180, 'minimum': -180}, 'crop': {'type': 'string', 'maxLength': 100}, 'name': {'type': 'string', 'maxLength': 200}, 'fields': {'type': 'array', 'items': {'type': 'object'}, 'maxItems': 60, 'description': 'GeoJSON Polygons to join into one farm.'}, 'join_m': {'type': 'number', 'maximum': 15, 'minimum': 0}, 'country': {'type': 'string', 'maxLength': 2, 'minLength': 2, 'description': 'ISO 3166-1 alpha-2.'}, 'boundary': {'type': 'object', 'description': 'GeoJSON Polygon or MultiPolygon.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['farm_id', 'farm_url'], 'properties': {'then': {}, 'farm_id': {'type': 'string'}, 'boundary': {'type': ['object', 'null']}, 'farm_url': {'type': 'string'}, 'next_action': {'type': 'string'}}}
Input schema
{'type': 'object', 'required': ['farm_id', 'lot'], 'properties': {'lot': {'type': 'object', 'description': 'The lot: crop, plants, harvestable_share, bunch_kg, maturity, days_since_flowering, expected_daily_mean_c (each a {low, mid, high} range where a range), fingers, chemicals, certificates, offer {farm_gate_price, order_kg, target {margin, max_p_loss}}, farmer_asks, farmer_consents, people.'}, 'farm_id': {'type': 'string', 'description': 'A farm id from eudr_procurement_overview.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['decision_id', 'decisions', 'assumptions'], 'properties': {'readouts': {'type': 'array', 'items': {'type': 'object'}}, 'decisions': {'type': 'array', 'items': {'type': 'object'}}, 'assumptions': {'type': 'array', 'items': {'type': 'string'}}, 'decision_id': {'type': 'string'}, 'farmer_view': {'type': 'object'}, 'recommended': {'type': ['string', 'null']}, 'rules_in_force': {'type': 'array', 'items': {'type': 'string'}}, 'process_version': {'type': 'integer'}}}
Input schema
{'type': 'object', 'required': ['task_id'], 'properties': {'task_id': {'type': 'string', 'maxLength': 64, 'description': 'The task_id of a compile that has produced a statement.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['schema', 'task_id', 'steps', 'signing_parties', 'not_established'], 'properties': {'steps': {'type': 'array', 'items': {'type': 'object'}, 'description': 'A step either ran (stage, what, consumed, produced, signed_by, reproduce) or did not, in which case it carries present:false and why_absent. An absent stage is emitted, never omitted.'}, 'schema': {'type': 'string', 'const': 'eudr.execution_trace.v1'}, 'verify': {'type': 'string'}, 'task_id': {'type': 'string'}, 'verdict': {'type': ['string', 'null']}, 'generated_at': {'type': 'string'}, 'full_statement': {'type': 'string'}, 'not_established': {'type': 'array', 'items': {'type': 'object'}}, 'signing_parties': {'type': 'object'}}}
Input schema
{'type': 'object', 'required': ['task_id', 'format'], 'properties': {'format': {'enum': ['traces_xml', 'annex_ii_json', 'plots_geojson'], 'type': 'string', 'description': '`traces_xml` for the EUDR Information System submission shape, `annex_ii_json` for the signed statement, `plots_geojson` for the boundaries as a FeatureCollection.'}, 'task_id': {'type': 'string', 'maxLength': 64, 'description': 'The task_id of a completed compile.'}, 'activity': {'enum': ['IMPORT', 'EXPORT', 'DOMESTIC', 'TRADE'], 'type': 'string', 'description': 'TRACES activity type. Defaults to the activity the statement was compiled with.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['task_id', 'format', 'document'], 'properties': {'format': {'enum': ['traces_xml', 'annex_ii_json', 'plots_geojson'], 'type': 'string'}, 'task_id': {'type': 'string'}, 'activity': {'type': 'string'}, 'document': {'description': 'The exported document. A string for traces_xml, an object for the other two.'}, 'verify_at': {'type': 'string'}, 'next_action': {'type': 'string'}, 'receipt_cid': {'type': ['string', 'null']}, 'download_url': {'type': 'string'}, 'dds_reference': {'type': ['string', 'null']}, 'signer_pubkey_b32': {'type': 'string'}, 'filed_with_any_authority': {'type': 'boolean'}}}
Input schema
{'type': 'object', 'required': ['evidence_cid'], 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'How many facts to return, up to 200. Defaults to 50.'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Index to start from. Defaults to 0.'}, 'evidence_cid': {'type': 'string', 'maxLength': 128, 'description': 'The handle returned by eudr_check_plots.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['evidence_cid', 'total', 'offset', 'returned', 'fact_cids'], 'properties': {'note': {'type': 'string'}, 'total': {'type': 'integer'}, 'offset': {'type': 'integer'}, 'returned': {'type': 'integer'}, 'algorithm': {'type': ['string', 'null']}, 'fact_cids': {'type': 'array', 'items': {'type': 'string'}}, 'minted_at': {'type': 'string'}, 'verify_at': {'type': 'string'}, 'next_offset': {'type': ['integer', 'null']}, 'evidence_cid': {'type': 'string'}, 'resolve_one_at': {'type': 'string'}, 'responder_pubkey_b32': {'type': ['string', 'null']}}}
Input schema
{'type': 'object', 'required': ['task_id'], 'properties': {'task_id': {'type': 'string', 'maxLength': 64, 'description': 'The task_id returned by eudr_prepare_dds.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['task_id', 'state'], 'properties': {'note': {'type': 'string'}, 'error': {'type': ['string', 'null']}, 'state': {'type': 'string'}, 'erased': {'type': 'boolean'}, 'settled': {'type': 'boolean'}, 'task_id': {'type': 'string'}, 'verdict': {'type': ['string', 'null']}, 'verify_at': {'type': 'string'}, 'report_url': {'type': 'string'}, 'next_action': {'type': 'string'}, 'receipt_cid': {'type': ['string', 'null']}, 'signer_pubkey_b32': {'type': 'string'}}}
Input schema
{'type': 'object', 'required': ['format', 'document'], 'properties': {'limit': {'type': 'integer', 'maximum': 25, 'minimum': 1, 'description': 'How many shipments to return in full, including plot boundaries. Defaults to 8, which is what eudr_check_plots accepts in one call.'}, 'format': {'enum': ['csv', 'epcis'], 'type': 'string', 'description': '`csv` for the published column set, `epcis` for a GS1 EPCIS 2.0 JSON-LD document.'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Which shipment to start detailing from. Totals always cover the whole document.'}, 'document': {'type': 'string', 'maxLength': 2000000, 'description': 'The document itself. CSV text including its header row, or the EPCIS document as JSON text.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['format', 'shipments_read', 'rows_returned', 'offset', 'rows_skipped', 'warnings', 'shipments', 'stored', 'next_action', 'note'], 'properties': {'note': {'type': 'string'}, 'format': {'enum': ['csv', 'epcis'], 'type': 'string'}, 'offset': {'type': 'integer'}, 'stored': {'type': 'boolean'}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'shipments': {'type': 'array', 'items': {'type': 'object'}}, 'next_action': {'type': 'string'}, 'next_offset': {'type': ['integer', 'null']}, 'rows_skipped': {'type': 'integer'}, 'rows_returned': {'type': 'integer'}, 'shipments_read': {'type': 'integer'}}}
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['farms'], 'properties': {'farms': {'type': 'array'}}}
Input schema
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'How many to return. Defaults to 20.'}, 'country': {'type': 'string', 'pattern': '^[A-Za-z]{2}$', 'description': 'Only statements for this country of production.'}, 'verdict': {'enum': ['negligible', 'non_negligible', 'not_in_scope', 'indeterminate'], 'type': 'string'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['organisation', 'returned', 'statements', 'note'], 'properties': {'note': {'type': 'string'}, 'returned': {'type': 'integer'}, 'statements': {'type': 'array', 'items': {'type': 'object'}}, 'organisation': {'type': 'string'}}}
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['organisation', 'pending', 'submitted', 'requests', 'note'], 'properties': {'note': {'type': 'string'}, 'pending': {'type': 'integer'}, 'requests': {'type': 'array', 'items': {'type': 'object'}}, 'submitted': {'type': 'integer'}, 'organisation': {'type': 'string'}}}
Input schema
{'type': 'object', 'required': ['kind'], 'properties': {'kind': {'enum': ['country_risk', 'commodities'], 'type': 'string', 'description': '`country_risk` for the benchmark tiers, `commodities` for the Annex I mapping.'}, 'country': {'type': 'string', 'pattern': '^[A-Za-z]{2}$', 'description': "With kind=country_risk, return just this country's tier instead of the whole table."}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['kind'], 'properties': {'kind': {'enum': ['country_risk', 'commodities'], 'type': 'string'}, 'note': {'type': 'string'}, 'tier': {'enum': ['low', 'standard', 'high'], 'type': 'string'}, 'basis': {'type': 'string'}, 'country': {'type': 'string'}, 'low_risk': {'type': 'array', 'items': {'type': 'string'}}, 'high_risk': {'type': 'array', 'items': {'type': 'string'}}, 'reference': {'type': 'object'}, 'commodities': {'type': 'array', 'items': {'type': 'object'}}, 'simplified_due_diligence_available': {'type': 'boolean'}}}
Input schema
{'type': 'object', 'properties': {'shipment_id': {'type': 'string', 'description': "Optional. One shipment's plan; omit for every open plan."}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['organisation', 'open_plans', 'plans', 'note'], 'properties': {'note': {'type': 'string'}, 'plans': {'type': 'array', 'items': {'type': 'object'}}, 'open_plans': {'type': 'integer'}, 'organisation': {'type': 'string'}, 'outstanding_steps': {'type': 'integer'}}}
Input schema
{'type': 'object', 'required': ['operator', 'supplier', 'product', 'geolocation'], 'properties': {'product': {'type': 'object', 'required': ['hs_code', 'description', 'net_mass_kg'], 'properties': {'hs_code': {'type': 'string', 'description': '2 to 8 digits, dot-separated, e.g. 1801.00.'}, 'trade_name': {'type': 'string'}, 'description': {'type': 'string'}, 'net_mass_kg': {'type': 'number', 'minimum': 0}, 'scientific_name': {'type': 'string'}}, 'additionalProperties': False}, 'operator': {'type': 'object', 'required': ['name', 'country_of_establishment'], 'properties': {'eori': {'type': 'string', 'description': 'EORI number, where the consignment crosses the EU customs border.'}, 'name': {'type': 'string'}, 'role': {'enum': ['operator', 'trader_as_operator', 'downstream_operator', 'sme_trader'], 'type': 'string'}, 'address': {'type': 'string'}, 'country_of_establishment': {'type': 'string', 'pattern': '^[A-Za-z]{2}$'}}, 'additionalProperties': False}, 'producer': {'type': 'object', 'required': ['name'], 'properties': {'id': {'type': 'string'}, 'kind': {'enum': ['cooperative', 'smallholder', 'plantation', 'concession', 'family_farm'], 'type': 'string'}, 'name': {'type': 'string'}}, 'description': 'The primary producer, where that is not the supplier.', 'additionalProperties': False}, 'supplier': {'type': 'object', 'required': ['name', 'id'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'email': {'type': 'string'}, 'address': {'type': 'string'}, 'country': {'type': 'string', 'pattern': '^[A-Za-z]{2}$'}}, 'additionalProperties': False}, 'geolocation': {'type': 'object', 'required': ['country', 'harvest_window', 'plot_geojson'], 'properties': {'country': {'type': 'string', 'pattern': '^[A-Za-z]{2}$'}, 'plot_id': {'type': 'string', 'maxLength': 64, 'description': "The primary plot's own identifier (a field, cadastral or cooperative code)."}, 'plot_geojson': {'type': 'object', 'description': 'GeoJSON Polygon, MultiPolygon or Point in WGS84.'}, 'harvest_window': {'type': 'string', 'description': 'ISO interval YYYY-MM-DD/YYYY-MM-DD, or free text.'}, 'additional_plots': {'type': 'array', 'items': {'type': 'object', 'required': ['plot_id', 'plot_geojson'], 'properties': {'country': {'type': 'string', 'pattern': '^[A-Za-z]{2}$', 'description': "Only when the plot lies in another country than the consignment's."}, 'plot_id': {'type': 'string', 'maxLength': 64}, 'quantity_kg': {'type': 'number', 'minimum': 0, 'description': "This plot's share; omitted, the rest of the consignment is split evenly."}, 'plot_geojson': {'type': 'object', 'description': 'GeoJSON Polygon, MultiPolygon or Point in WGS84.'}, 'harvest_window': {'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 500, 'description': 'Every further plot of the consignment. Each is measured and filed on its own; the consignment is negligible only if every plot is.'}, 'country_subregion': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['task_id', 'read_outcome_with', 'report_url', 'filed_with_any_authority', 'data_stored_here', 'data_sent_upstream', 'next_action'], 'properties': {'state': {'type': ['string', 'null']}, 'task_id': {'type': 'string'}, 'report_url': {'type': 'string'}, 'next_action': {'type': 'string'}, 'data_stored_here': {'type': 'string'}, 'read_outcome_with': {'type': 'string'}, 'data_sent_upstream': {'type': 'string'}, 'filed_with_any_authority': {'type': 'boolean'}}}
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['decisions', 'counts', 'farms', 'lot_example'], 'properties': {'farms': {'type': 'array', 'items': {'type': 'object'}}, 'counts': {'type': 'object'}, 'decisions': {'type': 'array', 'items': {'type': 'object'}}, 'lot_example': {'type': 'object'}}}
Input schema
{'type': 'object', 'required': ['supplier_name'], 'properties': {'email': {'type': 'string', 'maxLength': 254, 'description': 'Optional, recorded so you can see where the link was meant to go. It is not verified and nothing is sent to it.'}, 'supplier_name': {'type': 'string', 'maxLength': 200, 'description': 'Your name for the counterparty, shown to them on the intake page.'}, 'valid_for_days': {'type': 'integer', 'maximum': 90, 'minimum': 1, 'description': 'How long the link works. Defaults to 30.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['request_id', 'supplier', 'intake_url', 'expires_at', 'shown_once', 'emailed', 'next_action'], 'properties': {'note': {'type': 'string'}, 'emailed': {'type': 'boolean'}, 'supplier': {'type': 'string'}, 'expires_at': {'type': 'string'}, 'intake_url': {'type': 'string'}, 'request_id': {'type': 'string'}, 'shown_once': {'type': 'boolean'}, 'next_action': {'type': 'string'}}}
Input schema
{'type': 'object', 'required': ['farm_id'], 'properties': {'fields': {'type': 'array', 'items': {'type': 'object'}, 'maxItems': 60}, 'join_m': {'type': 'number', 'maximum': 15, 'minimum': 0}, 'farm_id': {'type': 'string'}, 'boundary': {'type': 'object'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['farm_id', 'area_ha'], 'properties': {'then': {}, 'area_ha': {'type': 'number'}, 'farm_id': {'type': 'string'}}}
Input schema
{'type': 'object', 'required': ['receipt'], 'properties': {'receipt': {'type': 'object', 'description': 'The receipt as issued: schema, cid, payload, canonical_b64, signature_b64, signer, signed_at.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['valid', 'note'], 'properties': {'cid': {'type': ['string', 'null']}, 'note': {'type': 'string'}, 'valid': {'type': 'boolean'}, 'reason': {'type': 'string'}, 'signer': {'type': ['string', 'null']}, 'signed_at': {'type': ['string', 'null']}}}
Recent tool changes
Similar MCP servers
BeeL
Provides Spanish company administration and VeriFactu-compliant invoicing, including customers, products, invoice issuance, corre…
corply
Supports company formation and corporate administration including incorporation documents, signatures, cap tables, corporate acti…
FalaZuki Finance BR
Provides Brazil-focused financial calculations and rules for investments, credit, taxes, payroll, labor costs, debt, budgeting, a…
XBOSS
Accesses Korean tax, social insurance, payroll, cash receipt, e-tax invoice, and certificate filing services.
Sirenic
Provides European company registry, financial, procurement, sanctions, regulatory, insolvency, ownership, and ongoing due-diligen…
Xearno Tools
Provides financial, tax, employment-benefit, lending, pricing, and business calculators using jurisdiction-specific rules and cur…
schedule-iii
Transforms Indian company trial balances into controlled Schedule III financial statement workbooks with account mappings, disclo…
editalmd
Searches Brazilian public procurement opportunities and documents, tracks deadlines and alerts, and supports tender document acce…