{
  "@context": [
    "https://schema.org",
    {
      "zentient": "https://zentient.studio/vocab/",
      "manifestVersion": "zentient:manifestVersion",
      "canonicalUrl": "zentient:canonicalUrl",
      "capabilities": "zentient:capabilities",
      "intake": "zentient:intake",
      "handshake": "zentient:handshake",
      "kit": "zentient:kit",
      "security": "zentient:security"
    }
  ],
  "@type": "Service",
  "@id": "https://zentient.studio/pto#service",
  "manifestVersion": "0.1.0",
  "canonicalUrl": "https://zentient.studio/pto/agents.json",
  "lastModified": "2026-04-24",

  "name": "zentient-PTO",
  "alternateName": "Permit-to-Operate autonomous submission",
  "description": "Autonomous Permit-to-Operate submission for Bay Area residential solar in PG&E service territory. Install-done to utility-submit in hours. Flat fee per application.",
  "serviceType": "Permit-to-Operate filing for residential solar",
  "url": "https://zentient.studio/pto",

  "provider": {
    "@type": "Organization",
    "name": "Zentient Studio",
    "url": "https://zentient.studio",
    "email": "al@ecoterium.com",
    "address": {
      "@type": "PostalAddress",
      "addressLocality": "San Francisco",
      "addressRegion": "CA",
      "addressCountry": "US"
    }
  },

  "areaServed": {
    "@type": "AdministrativeArea",
    "name": "PG&E service territory, California, USA",
    "description": "Pacific Gas & Electric service territory only. Not SCE, SDG&E, LADWP, or other IOUs. Non-PG&E territory is roadmap."
  },

  "audience": [
    { "@type": "Audience", "audienceType": "Solar Contractor" },
    { "@type": "Audience", "audienceType": "General Contractor" },
    { "@type": "Audience", "audienceType": "Homeowner" },
    { "@type": "Audience", "audienceType": "Procurement Agent" },
    { "@type": "Audience", "audienceType": "Marketing Agency Bot" }
  ],

  "offers": {
    "@type": "Offer",
    "priceSpecification": {
      "@type": "PriceSpecification",
      "priceCurrency": "USD",
      "minPrice": 550,
      "maxPrice": 600,
      "unitText": "per residential PTO application"
    },
    "eligibleRegion": "PG&E service territory, California",
    "paymentAccepted": "50% deposit on intake, 50% at submit-readiness (USD)",
    "description": "Flat-fee residential PTO application. PG&E's $145 interconnection fee is a pass-through billed to the client separately. Volume / multi-project / referral pricing: contact for quote.",
    "availability": "https://schema.org/InStock"
  },

  "capabilities": {
    "tariff": ["NBT", "NEM2-legacy-only"],
    "project_type": ["residential"],
    "system_type": ["solar", "solar+battery"],
    "system_size_kw_range": { "min": 3, "max": 25 },
    "system_size_kw_over_25_policy": "case-by-case, contact for quote",
    "turnaround_sla": {
      "intake_to_submit": "hours (once client documentation is in hand)",
      "utility_engineering_review": "typically 2–4 weeks (PG&E timeline, outside vendor control)"
    },
    "supported_documents": [
      "contract",
      "permit",
      "cpg",
      "cslb_disclosure",
      "meter_photo",
      "utility_bill",
      "plans",
      "authorization",
      "inspection_photo",
      "interconnection_form"
    ],
    "evidence_tiers": ["plans", "install-photo", "field-verified"]
  },

  "intake": {
    "human": {
      "method": "mailto",
      "contact": "al@ecoterium.com",
      "subjectLine": "zentient-PTO — Discovery Call",
      "description": "20-minute call, share the project, walk away with a quote."
    },
    "agent": {
      "method": "install-kit",
      "url": "https://zentient.studio/pto/agent-kit/",
      "recommended_entrypoint": "https://zentient.studio/pto/agent-kit/verify-and-install.sh",
      "description": "Run the signed installer wrapper. It fetches install.sh + .sig + pubkey.pem + .sha256 from this origin, verifies both SHA-256 and Ed25519 signature against the pinned pubkey, then executes install.sh. Kit drops a local intake tool into the visiting agent's environment.",
      "direct": {
        "method": "email",
        "contact": "al@ecoterium.com",
        "subjectLine": "zentient-PTO — Agent Intake",
        "bodyFormat": "structured JSON per intake schema (v1 stub); see kit README"
      }
    }
  },

  "handshake": {
    "status": "v0.1 — design published, endpoint stub pending",
    "model": "bring-your-own-key, capability-gated",
    "registration": {
      "algorithm": "Ed25519",
      "flow": [
        "Agent generates Ed25519 keypair locally during install; private key kept in agent's own storage (never transmitted)",
        "Agent POSTs {pubkey, vendorMetadata} to registration endpoint",
        "Server responds with one-time challenge (32-byte nonce)",
        "Agent signs challenge with private key, returns signature",
        "Server verifies signature against submitted pubkey, issues vendorId",
        "Agent includes vendorId in every subsequent signed request"
      ],
      "endpoint_placeholder": "https://zentient.studio/pto/api/v0/vendor/register",
      "note": "Endpoint wiring is staged — v0.1 accepts intake via the kit's submit.sh (email transport). Full API endpoint with live registration lands when the first external vendor commits to integrate. Email us first."
    },
    "request_signing": {
      "algorithm": "Ed25519",
      "canonicalization": "JCS (RFC 8785)",
      "signed_payload_fields": ["vendorId", "method", "args", "timestamp", "nonce"],
      "envelope_vs_payload_policy": "server rejects any request where envelope fields disagree with signedPayload fields; routing uses signed values only",
      "args_signing": "required — every field the server trusts must be inside the signedPayload, including all request args",
      "timestamp_skew_window_seconds": 30,
      "nonce_policy": "server-side LRU dedup of {vendorId, nonce} pairs within 2× skew window",
      "replay_protection": "skew + nonce dedup; signed requests cannot be replayed outside a 30s window"
    },
    "key_rotation": {
      "policy": "proof-of-possession of current key required to rotate",
      "flow": "vendor sends rotation envelope signed by OLD key containing NEW pubkey; server verifies with old key, swaps to new, logs the event; revocation list maintained separately"
    },
    "capability_scoping": {
      "model": "capability-gated, not identity-gated",
      "note": "External vendors get a narrower API surface than intra-swarm bots. Read-mostly; idempotent writes only; no high-blast-radius operations. Per-vendor rate limits, per-endpoint allowlists, per-vendor audit log.",
      "registry": "separate VENDOR_REGISTRY — NOT the intra-swarm SWARM_ALLOWLIST"
    }
  },

  "kit": {
    "entrypoint": "https://zentient.studio/pto/agent-kit/verify-and-install.sh",
    "installer": "https://zentient.studio/pto/agent-kit/install.sh",
    "signature": "https://zentient.studio/pto/agent-kit/install.sh.sig",
    "sha256": "https://zentient.studio/pto/agent-kit/install.sh.sha256",
    "pubkey": "https://zentient.studio/pto/agent-kit/pubkey.pem",
    "pubkey_fingerprint_sha256": "f00032a2cba3dbe5836b0fc978e595288e79977af741efaca2748be557710750",
    "pubkey_algorithm": "Ed25519",
    "installer_hardening": [
      "self-contained — no transitive curl|bash",
      "--dry-run flag prints planned filesystem changes without making them",
      "--uninstall flag reverses every install-time change",
      "--version flag for pinning",
      "idempotent — second run is a no-op",
      "OS allowlist (Linux, Darwin)",
      "refuses to run as root without explicit --apply override",
      "writes an install.log recording every file/directory touched",
      "no eval of fetched content"
    ],
    "kit_version": "0.1.0-stub"
  },

  "security": {
    "disclosure": "https://zentient.studio/pto/security.txt",
    "contact": "al@ecoterium.com",
    "subjectLine": "zentient-PTO — Security Report",
    "rfc_9116": true
  },

  "publish_policy": {
    "allowed_public": [
      "aggregate submission counts",
      "region-level project locations",
      "turnaround time statistics"
    ],
    "forbidden_public": [
      "client surnames",
      "client property addresses",
      "PG&E application IDs",
      "per-project fee amounts tied to named cases",
      "referral discount amounts",
      "multi-unit bundle pricing"
    ]
  },

  "case_study_aggregate_2026_04": {
    "ptos_submitted": 5,
    "projects": 4,
    "region": "Bay Area, California",
    "cities": ["San Francisco", "Walnut Creek", "San Pablo"],
    "submission_time_once_docs_in_hand": "hours",
    "named_references": "available on request"
  }
}
