{
  "$schema": "https://machinesignal.it/machine-purchase-readiness-benchmark.schema.json",
  "benchmark_id": "MS-B2B-MACHINE-PURCHASE-READINESS-IT",
  "version": "1.0.0",
  "status": "published_public_methodology",
  "publisher": {
    "name": "MachineSignal",
    "url": "https://machinesignal.it/",
    "role": "methodology_author_not_independent_certifier"
  },
  "license": {
    "copyright": "Copyright 2026 MachineSignal. All rights reserved.",
    "citation_with_canonical_link_permitted": true,
    "reproduction_or_commercial_reuse_license_granted": false
  },
  "scope": {
    "market": "B2B Italy",
    "buyer": "authorized_machine_acting_for_a_real_business",
    "transaction": "digital_service_purchase",
    "goal": "technical_and_operational_zero_touch_readiness",
    "not_a_legal_tax_security_or_commercial_certification": true,
    "foreign_markets": "out_of_scope_research_only"
  },
  "scoring": {
    "maximum_score": 100,
    "criterion_count": 20,
    "criterion_weight": 5,
    "allowed_scores_per_criterion": [
      0,
      2,
      5
    ],
    "score_meanings": {
      "0": "absent_or_contradicted",
      "2": "documented_manual_or_partially_machine_verifiable",
      "5": "machine_verifiable_and_fail_closed"
    },
    "thresholds": [
      {
        "minimum": 0,
        "maximum": 39,
        "label": "not_ready"
      },
      {
        "minimum": 40,
        "maximum": 59,
        "label": "discoverable_but_incomplete"
      },
      {
        "minimum": 60,
        "maximum": 79,
        "label": "controlled_pilot_only"
      },
      {
        "minimum": 80,
        "maximum": 100,
        "label": "production_candidate_subject_to_no_hard_blockers"
      }
    ],
    "hard_blocker_rule": "A production candidate requires score 5 on every hard-blocker criterion."
  },
  "dimensions": [
    {
      "dimension_id": "D",
      "title_it": "Scoperta e contratto pubblico",
      "title_en": "Discovery and public contract",
      "maximum_score": 20,
      "criteria": [
        {
          "criterion_id": "D1",
          "weight": 5,
          "title_it": "Identita e punto di scoperta canonico",
          "title_en": "Canonical identity and discovery endpoint",
          "verification": "A machine can retrieve a canonical Agent Card, MCP Server Card or equivalent identity document over HTTPS."
        },
        {
          "criterion_id": "D2",
          "weight": 5,
          "title_it": "Catalogo con prodotto, prezzo, valuta e perimetro",
          "title_en": "Catalog with product, price, currency and scope",
          "verification": "The machine-readable catalog exposes stable product code, price, currency, market and exclusions without a hidden human negotiation."
        },
        {
          "criterion_id": "D3",
          "weight": 5,
          "title_it": "Contratto API machine-readable",
          "title_en": "Machine-readable API contract",
          "verification": "OpenAPI or an equivalent protocol contract defines inputs, outputs, errors, status and authentication."
        },
        {
          "criterion_id": "D4",
          "weight": 5,
          "title_it": "Esempio sintetico completo",
          "title_en": "Complete synthetic example",
          "verification": "A synthetic example shows the real output shape, limits and side-effect policy without exposing customer data."
        }
      ]
    },
    {
      "dimension_id": "A",
      "title_it": "Identita aziendale e mandato della macchina",
      "title_en": "Business identity and machine authority",
      "maximum_score": 20,
      "criteria": [
        {
          "criterion_id": "A1",
          "weight": 5,
          "title_it": "Identita verificabile del venditore",
          "title_en": "Verifiable seller identity",
          "verification": "Seller identity, public terms, privacy information and durable contact channels are available before ordering."
        },
        {
          "criterion_id": "A2",
          "weight": 5,
          "title_it": "Identita B2B e mercato del compratore",
          "title_en": "Buyer B2B identity and market",
          "verification": "The order validates business identity, billing country and supported market before checkout."
        },
        {
          "criterion_id": "A3",
          "weight": 5,
          "title_it": "Mandato, ruolo e limite di spesa della macchina",
          "title_en": "Machine mandate, role and spending limit",
          "verification": "The buyer machine presents verifiable authority to accept the contract, supply business data and spend within a defined limit."
        },
        {
          "criterion_id": "A4",
          "weight": 5,
          "title_it": "Autenticazione a privilegio minimo",
          "title_en": "Least-privilege authentication",
          "verification": "Tokens are audience-bound, short-lived where appropriate, protected from passthrough and limited to the required action."
        }
      ]
    },
    {
      "dimension_id": "O",
      "title_it": "Ordine e pagamento sicuri",
      "title_en": "Safe order and payment",
      "maximum_score": 20,
      "criteria": [
        {
          "criterion_id": "O1",
          "weight": 5,
          "title_it": "Correzione errori e ricevuta elettronica",
          "title_en": "Input correction and electronic acknowledgement",
          "verification": "The buyer can validate and correct inputs before ordering and receives an accessible electronic acknowledgement without undue delay."
        },
        {
          "criterion_id": "O2",
          "weight": 5,
          "title_it": "Idempotenza di ordine ed effetti",
          "title_en": "Order and side-effect idempotency",
          "verification": "Retries with the same key cannot create duplicate orders, charges, invoices or deliveries."
        },
        {
          "criterion_id": "O3",
          "weight": 5,
          "title_it": "Checkout specifico per il compratore",
          "title_en": "Buyer-specific checkout",
          "verification": "Checkout is released only after validation, is bound to the order and is not a reusable anonymous public payment link."
        },
        {
          "criterion_id": "O4",
          "weight": 5,
          "title_it": "Pagamento verificato server-side",
          "title_en": "Server-verified payment",
          "verification": "Payment lifecycle, SCA-required states and signed webhook verification are handled before fulfillment."
        }
      ]
    },
    {
      "dimension_id": "F",
      "title_it": "Consegna ed evidenze",
      "title_en": "Fulfillment and evidence",
      "maximum_score": 20,
      "criteria": [
        {
          "criterion_id": "F1",
          "weight": 5,
          "title_it": "Input associato all'ordine e acquisito nel momento corretto",
          "title_en": "Order-scoped input acquired at the correct stage",
          "verification": "Customer data is accepted only for the authenticated paid order and is bound to that order."
        },
        {
          "criterion_id": "F2",
          "weight": 5,
          "title_it": "Consegna autenticata, versionata e verificabile",
          "title_en": "Authenticated, versioned and verifiable delivery",
          "verification": "The buyer retrieves the artifact with order-scoped authorization and can verify version, hash and completeness."
        },
        {
          "criterion_id": "F3",
          "weight": 5,
          "title_it": "Stato e audit trail ricostruibili",
          "title_en": "Reconstructable status and audit trail",
          "verification": "The buyer can query order state while the seller can reconstruct validation, payment, processing, delivery and invoicing events."
        },
        {
          "criterion_id": "F4",
          "weight": 5,
          "title_it": "Retry, recovery e fail-closed",
          "title_en": "Retry, recovery and fail-closed behavior",
          "verification": "Temporary failures recover idempotently; ambiguous states stop without duplicate or unsafe external effects."
        }
      ]
    },
    {
      "dimension_id": "C",
      "title_it": "B2B Italia, fatturazione e privacy",
      "title_en": "B2B Italy, invoicing and privacy",
      "maximum_score": 20,
      "criteria": [
        {
          "criterion_id": "C1",
          "weight": 5,
          "title_it": "Perimetro B2B Italia fail-closed",
          "title_en": "Fail-closed B2B Italy scope",
          "verification": "The service verifies supported country and Italian business billing fields and rejects unsupported B2C or foreign sales."
        },
        {
          "criterion_id": "C2",
          "weight": 5,
          "title_it": "Termini versionati e accettazione dimostrabile",
          "title_en": "Versioned terms and provable acceptance",
          "verification": "Terms, privacy and refund rules are storable, reproducible, versioned and linked to the order acceptance."
        },
        {
          "criterion_id": "C3",
          "weight": 5,
          "title_it": "Fatturazione elettronica associata al pagamento",
          "title_en": "Electronic invoicing linked to payment",
          "verification": "The seller has a verified order-to-invoice path appropriate to its fiscal position, including required Italian electronic invoicing evidence."
        },
        {
          "criterion_id": "C4",
          "weight": 5,
          "title_it": "Minimizzazione, retention e protezione dei segreti",
          "title_en": "Data minimization, retention and secret protection",
          "verification": "Only necessary data is collected; retention and deletion are defined; secrets and raw personal data are excluded from public logs and artifacts."
        }
      ]
    }
  ],
  "hard_blockers": [
    "A2",
    "A3",
    "A4",
    "O1",
    "O2",
    "O3",
    "O4",
    "F1",
    "F2",
    "F4",
    "C1",
    "C2",
    "C3",
    "C4"
  ],
  "synthetic_examples": [
    {
      "example_id": "synthetic_docs_only",
      "description": "Public documentation and schemas exist, but there is no verified buyer authority, checkout or fulfillment chain.",
      "scores": {
        "D1": 5,
        "D2": 5,
        "D3": 5,
        "D4": 5,
        "A1": 2,
        "A2": 0,
        "A3": 0,
        "A4": 0,
        "O1": 2,
        "O2": 0,
        "O3": 0,
        "O4": 0,
        "F1": 0,
        "F2": 2,
        "F3": 2,
        "F4": 0,
        "C1": 2,
        "C2": 2,
        "C3": 0,
        "C4": 2
      },
      "declared_total": 34,
      "expected_label": "not_ready",
      "hard_blockers_passed": false
    },
    {
      "example_id": "synthetic_api_with_manual_gaps",
      "description": "The API and order flow are substantial, but mandate, checkout, payment and recovery still depend on manual intervention.",
      "scores": {
        "D1": 5,
        "D2": 5,
        "D3": 5,
        "D4": 5,
        "A1": 5,
        "A2": 5,
        "A3": 2,
        "A4": 2,
        "O1": 5,
        "O2": 5,
        "O3": 2,
        "O4": 2,
        "F1": 2,
        "F2": 5,
        "F3": 5,
        "F4": 2,
        "C1": 5,
        "C2": 5,
        "C3": 2,
        "C4": 5
      },
      "declared_total": 79,
      "expected_label": "controlled_pilot_only",
      "hard_blockers_passed": false
    },
    {
      "example_id": "synthetic_controlled_zero_touch",
      "description": "Every criterion is machine-verifiable and all essential gates fail closed.",
      "scores": {
        "D1": 5,
        "D2": 5,
        "D3": 5,
        "D4": 5,
        "A1": 5,
        "A2": 5,
        "A3": 5,
        "A4": 5,
        "O1": 5,
        "O2": 5,
        "O3": 5,
        "O4": 5,
        "F1": 5,
        "F2": 5,
        "F3": 5,
        "F4": 5,
        "C1": 5,
        "C2": 5,
        "C3": 5,
        "C4": 5
      },
      "declared_total": 100,
      "expected_label": "production_candidate_subject_to_no_hard_blockers",
      "hard_blockers_passed": true
    }
  ],
  "sources": [
    {
      "source_id": "a2a_agent_discovery",
      "publisher": "A2A Protocol",
      "url": "https://a2a-protocol.org/latest/topics/agent-discovery/",
      "supports": [
        "D1"
      ]
    },
    {
      "source_id": "openapi_specification",
      "publisher": "OpenAPI Initiative",
      "url": "https://spec.openapis.org/oas/latest.html",
      "supports": [
        "D3"
      ]
    },
    {
      "source_id": "mcp_authorization",
      "publisher": "Model Context Protocol",
      "url": "https://modelcontextprotocol.io/specification/2025-06-18/basic/authorization",
      "supports": [
        "A4"
      ]
    },
    {
      "source_id": "mcp_security_best_practices",
      "publisher": "Model Context Protocol",
      "url": "https://modelcontextprotocol.io/docs/tutorials/security/security_best_practices",
      "supports": [
        "A4",
        "C4"
      ]
    },
    {
      "source_id": "eu_ecommerce_directive_article_11",
      "publisher": "EUR-Lex",
      "url": "https://eur-lex.europa.eu/eli/dir/2000/31/2024-02-17/eng/pdf",
      "supports": [
        "O1",
        "C2"
      ]
    },
    {
      "source_id": "stripe_idempotent_requests",
      "publisher": "Stripe",
      "url": "https://docs.stripe.com/api/idempotent_requests",
      "supports": [
        "O2",
        "F4"
      ]
    },
    {
      "source_id": "stripe_webhook_signatures",
      "publisher": "Stripe",
      "url": "https://docs.stripe.com/webhooks/signature",
      "supports": [
        "O4"
      ]
    },
    {
      "source_id": "stripe_sca",
      "publisher": "Stripe",
      "url": "https://docs.stripe.com/strong-customer-authentication",
      "supports": [
        "O4"
      ]
    },
    {
      "source_id": "italian_electronic_invoicing",
      "publisher": "Agenzia delle Entrate",
      "url": "https://www1.agenziaentrate.gov.it/web_app_entrate/fatturazione_elettronica.html",
      "supports": [
        "C1",
        "C3"
      ]
    },
    {
      "source_id": "gdpr_article_5",
      "publisher": "EUR-Lex",
      "url": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32016R0679",
      "supports": [
        "C4"
      ]
    },
    {
      "source_id": "vies",
      "publisher": "European Commission",
      "url": "https://europa.eu/youreurope/business/taxation/vat/check-vat-number-vies/index_en.htm",
      "supports": [],
      "note": "Reference for a future EU extension; foreign sales are outside the current benchmark."
    }
  ],
  "release": {
    "published_on": "2026-07-23",
    "canonical_json": "https://machinesignal.it/machine-purchase-readiness-benchmark.json",
    "schema": "https://machinesignal.it/machine-purchase-readiness-benchmark.schema.json",
    "human_readable_it": "https://machinesignal.it/resources/machine-purchase-readiness-b2b-italy/",
    "human_readable_en": "https://machinesignal.it/en/resources/machine-purchase-readiness-b2b-italy/",
    "synthetic_examples_only": true,
    "contains_customer_or_order_data": false
  }
}
