T
TOMO
Developer Docs
BETA These docs are under partner review. Some features described are roadmap items, not yet shipped. Verify against your sandbox before relying on any contract.
● DRAFTv1.0.0auto.book_rc_transfer

Intent Spec — auto.book_rc_transfer

FULL ID:       auto.book_rc_transfer
VERSION:       v1.0.0
STATUS:        draft
LAST UPDATED:  2026-05-12
DOMAIN:        auto
PRIMARY AGENT: AutoServicesAgent
TTBS WEIGHTS:  time=0.20 taste=0.15 budget=0.20 safety=0.45

User books RC (Registration Certificate) transfer service — second-hand vehicle name transfer, hypothecation removal, address change in RC, transfer to a different state, duplicate RC issuance. Paperwork-heavy, RTO-dependent, multi-step. Highest SAFETY weight in the auto domain because mishandled RC transfers leave the seller liable for the buyer's traffic violations / accidents — a real consumer-safety risk.

Partner exemplars: Cars24, Spinny, CarTrade Tech, OLX Autos, GoMechanic RC, OEM-branded RC services (Maruti True Value), independent RTO agents under DSA agreements.


SECTION 1 — INTENT IDENTITY

User wants formal RTO paperwork on an existing vehicle. Distinct from:

  • auto.book_insurance_renewal — insurance is separate; transferred ownership needs new insurance too
  • auto.book_pollution_check — PUC is a precondition for RC transfer but separate intent
  • auto.book_major_service — pre-sale service is separate (often a multi-intent fan-out)
  • Buying / selling a used vehicle itself (out of scope v1; v1.1+ marketplace.list_used_vehicle)

Single intent per RC action. Combined "transfer name + remove hypothecation + change address" can be bundled if same RTO authority handles it (most do).


SECTION 2 — NATURAL LANGUAGE COVERAGE

CLASSIFIES IN

  • "Transfer the RC to my name — bought a used car"
  • "Remove hypothecation, loan is closed"
  • "Change address on RC"
  • "Inter-state RC transfer — moving to Karnataka"
  • "Duplicate RC — original lost"
  • "RC name change after marriage"
  • "RTO paperwork for used Innova I bought"
  • "Cars24 says they'll do RC transfer in 21 days"
  • "Need RTO agent for RC transfer"
  • "What documents needed for RC transfer"

CLASSIFIES OUT — BORDERLINE NO

  • "Buy a used car" → v1.1+ marketplace.list_used_vehicle
  • "Sell my car" → v1.1+ marketplace.list_used_vehicle
  • "First-time registration of new car" → not in scope v1 (handled by dealer)
  • "Re-register imported vehicle" → not in scope v1 (rare, customs-bound)

MULTI-INTENT TRIGGERS

  • "RC transfer + insurance in my name" → auto.book_rc_transfer + auto.book_insurance_renewal
  • "RC transfer + PUC + insurance — bought a used car" → auto.book_rc_transfer + auto.book_pollution_check + auto.book_insurance_renewal
  • "Sell my car + RC transfer assistance" → v1.1+ marketplace + auto.book_rc_transfer

SECTION 3 — INPUT (TOMO → PROVIDER)

{
  "intent": "auto.book_rc_transfer",
  "request_id": "req_01J9Z...",
  "user_locale": "en-IN",
  "user_currency": "INR",
  "user_location": { "lat": 17.4475, "lng": 78.3563, "city": "Hyderabad" },

  "vehicle": {
    "type": "car",
    "make": "Toyota",
    "model": "Innova Crysta",
    "fuel_type": "diesel",
    "year_of_manufacture": 2019,
    "registration_number_full": "TS09EZ1234",     // FULL plate REQUIRED here (RTO lookup needs it)
    "registration_state": "TS",                    // STRICT ENUM §6
    "rto_office": "TS09"
  },

  "transfer_scope": {
    "action_type": "ownership_transfer",           // STRICT ENUM §6
    "include_hypothecation_removal": false,
    "include_address_change": true,
    "include_inter_state_transfer": false,
    "to_state": null                               // REQUIRED when include_inter_state_transfer=true
  },

  "parties": {
    "user_role": "buyer",                          // STRICT ENUM §6: buyer | seller | sole_owner_changing_address | bank_releasing_hypothecation
    "seller_kyc_available": true,                  // ownership_transfer needs both parties
    "buyer_kyc_available": true,
    "form_29_30_signed": true                      // Form 29 (notice of transfer) + Form 30 (intimation) signed
  },

  "documents_on_hand":
    type: array<string>,
    constraint: REQUIRED,
    values_allowed: [original_rc, valid_puc, valid_insurance, form_29, form_30, form_28_noc_from_origin_rto, sale_letter, address_proof, pan_card, aadhaar, bank_loan_closure_certificate]

  "service_preferences": {
    "doorstep_document_collection": true,
    "preferred_window": {
      "earliest_pickup":  "2026-05-15T10:00:00+05:30",
      "latest_completion": "2026-06-15T18:00:00+05:30"
    },
    "max_acceptable_cost_inr": 8000,
    "express_processing_required": false
  },
  "ttbs_user_band": { "time": "balanced", "taste": "balanced", "budget": "good", "safety": "great" },
  "session_context": { "tomo_session_id": "ses_01J9Z...", "user_dna_hash": "dna_v3_a7c9..." }
}
Field Type Constraint Notes
intent string REQUIRED, STRICT ENUM Always auto.book_rc_transfer
vehicle.registration_number_full string REQUIRED, full plate Only auto intent where full plate is needed (RTO lookup)
vehicle.registration_state enum REQUIRED, STRICT ENUM §6
vehicle.rto_office string REQUIRED RTO code (e.g. TS09)
transfer_scope.action_type enum REQUIRED, STRICT ENUM §6 Drives document checklist
transfer_scope.include_inter_state_transfer bool REQUIRED Inter-state = extra steps (NOC from origin RTO)
transfer_scope.to_state enum REQUIRED when include_inter_state_transfer=true, STRICT ENUM §6
parties.user_role enum REQUIRED, STRICT ENUM §6
parties.seller_kyc_available bool REQUIRED ownership_transfer blocked when FALSE
parties.buyer_kyc_available bool REQUIRED
parties.form_29_30_signed bool REQUIRED ownership_transfer blocked when FALSE
documents_on_hand array REQUIRED, may be empty Partner cross-checks against required docs

Anti-fabrication preamble: Provider may not promise timeline below the RTO's published average processing time. Document handling must follow IT Act + state DSA agent rules. No agent may forge buyer/seller signatures — TOMO will report to RTO + police.


SECTION 4 — PROVIDER TOOLS

Tool 1: search_rc_agents

PURPOSE:      Up to 10 RC transfer service partners covering the user's RTO + transfer_scope
SLA:          p50 ≤ 800ms, p95 ≤ 2000ms, p99 ≤ 4000ms
RATE LIMIT:   60 req/min
IDEMPOTENCY:  request_id; 120s cache
RETRY:        1 on 429, 2 on 5xx

Tool 2: book_rc_transfer

PURPOSE:      Confirm partner + scope + price + doc pickup schedule
SLA:          p50 ≤ 1500ms, p95 ≤ 4000ms
RATE LIMIT:   30 req/min
IDEMPOTENCY:  request_id
RETRY:        No retry

Tool 3: get_transfer_status

PURPOSE:      Polling status during multi-week RTO process
SLA:          p50 ≤ 400ms, p95 ≤ 1200ms
RATE LIMIT:   120 req/min
IDEMPOTENCY:  None — live
RETRY:        2 on 5xx

Tool 4: cancel_rc_transfer

PURPOSE:      Cancel pre-RTO-submission only; post-submission requires RTO workflow
SLA:          p50 ≤ 800ms, p95 ≤ 2500ms
RATE LIMIT:   30 req/min
RETRY:        1 on 5xx

SECTION 5 — RESPONSE SHAPE

RcAgent

RcAgent:
  agent_id: { type: string, constraint: REQUIRED }
  name: { type: string, constraint: REQUIRED }
  agent_type:
    type: enum
    constraint: REQUIRED, STRICT ENUM §6
    values: [licensed_dsa_agent, oem_branded_service, vehicle_marketplace_service, independent_rto_consultant]
  rto_dsa_license_number: { type: string, constraint: REQUIRED, semantics: "state-issued DSA / authorised agent license; verifiable on state transport dept site" }
  authorised_rtos:
    type: array<string>
    constraint: REQUIRED, ≥1
    semantics: list of RTO codes this agent is licensed for

  address: { type: string, constraint: REQUIRED }
  location: { type: object, shape: { lat, lng }, constraint: REQUIRED }
  distance_from_user_km: { type: float, constraint: REQUIRED, 0-30 }

  capabilities:
    handles_ownership_transfer: { type: boolean, constraint: REQUIRED }
    handles_hypothecation_removal: { type: boolean, constraint: REQUIRED }
    handles_address_change: { type: boolean, constraint: REQUIRED }
    handles_inter_state_transfer: { type: boolean, constraint: REQUIRED }
    handles_duplicate_rc: { type: boolean, constraint: REQUIRED }
    doorstep_document_pickup: { type: boolean, constraint: REQUIRED }
    express_processing_available: { type: boolean, constraint: REQUIRED }

  estimated_timeline_days:
    standard:
      ownership_transfer: { type: int, constraint: REQUIRED, 7-45 }
      hypothecation_removal: { type: int, constraint: REQUIRED, 5-21 }
      address_change: { type: int, constraint: REQUIRED, 7-30 }
      inter_state_transfer: { type: int, constraint: REQUIRED, 21-90 }
      duplicate_rc: { type: int, constraint: REQUIRED, 10-30 }
    express_premium_inr: { type: int, constraint: REQUIRED nullable, INR_INTEGER, ≥0 }
    express_timeline_days: { type: int, constraint: REQUIRED nullable, 3-21 }

  pricing:
    service_fee_inr: { type: int, constraint: REQUIRED, INR_INTEGER, ≥0 }
    rto_govt_fee_inr: { type: int, constraint: REQUIRED, INR_INTEGER, ≥0, semantics: "actual govt fee pass-through" }
    stamp_duty_inr: { type: int, constraint: REQUIRED, INR_INTEGER, ≥0 }
    smart_card_fee_inr: { type: int, constraint: REQUIRED, INR_INTEGER, ≥0 }
    gst_on_service_inr: { type: int, constraint: REQUIRED, INR_INTEGER, ≥0, semantics: "18% on service_fee only — govt fees no-GST" }
    total_inr: { type: int, constraint: REQUIRED, INR_INTEGER }
    govt_fee_separation_disclosed: { type: boolean, constraint: REQUIRED, semantics: "MUST be true — user must see govt fee separately" }

  documents_required:
    type: array<string>
    constraint: REQUIRED, ≥3
    semantics: which documents partner needs user to provide for declared scope

  guarantees:
    timeline_guarantee_days: { type: int, constraint: REQUIRED, semantics: "partner refunds if not done within this window" }
    refund_on_failure_pct: { type: int, constraint: REQUIRED, 0-100 }
    legal_liability_coverage_inr: { type: int, constraint: REQUIRED, INR_INTEGER, ≥0, semantics: "partner's professional indemnity cover" }

  ratings:
    avg_rating: { type: float, constraint: REQUIRED, 0-5 }
    review_count: { type: int, constraint: REQUIRED, ≥0 }
    on_time_completion_pct_last_90d: { type: int, constraint: REQUIRED, 0-100 }
    rejection_rate_pct_last_90d: { type: int, constraint: REQUIRED, 0-100, semantics: "% applications rejected by RTO due to agent error" }

  partner_reference:
    source: { type: string, constraint: REQUIRED }
    deeplink: { type: string, constraint: REQUIRED, HTTPS URL }

RcTransferBooking

RcTransferBooking:
  booking_id: { type: string, constraint: REQUIRED, immutable }
  agent_id: { type: string, constraint: REQUIRED }
  action_type: { type: enum, constraint: REQUIRED, STRICT ENUM §6 }
  document_pickup_at: { type: string, constraint: REQUIRED, ISO_DATETIME }
  estimated_completion: { type: string, constraint: REQUIRED, ISO_DATE }
  case_id_at_rto: { type: string, constraint: REQUIRED nullable, semantics: "RTO-side reference after submission" }
  contact_lead_name: { type: string, constraint: REQUIRED }
  contact_lead_phone: { type: string, constraint: REQUIRED, E.164 }
  total_inr: { type: int, constraint: REQUIRED, INR_INTEGER }
  payment_due_at: { type: enum, constraint: REQUIRED, STRICT ENUM §6, values: [50_percent_now_balance_on_completion, on_completion, milestone_based] }
  document_acknowledgement_url: { type: string, constraint: REQUIRED, HTTPS URL, semantics: "signed receipt of documents collected from user" }

RcTransferStatus

RcTransferStatus:
  booking_id: { type: string, constraint: REQUIRED }
  current_phase:
    type: enum
    constraint: REQUIRED, STRICT ENUM §6
    values: [documents_collected, verification, rto_submission_pending, rto_submitted, rto_in_review, rto_objection, rto_approved, new_rc_printed, new_rc_dispatched, completed, cancelled, rejected]
  phase_history:
    type: array<PhaseEvent>
    constraint: REQUIRED, ≥1
    shape:
      phase: { type: enum, constraint: REQUIRED, STRICT ENUM §6 }
      occurred_at: { type: string, constraint: REQUIRED, ISO_DATETIME }
      note: { type: string, constraint: REQUIRED nullable }
  estimated_completion_revised: { type: string, constraint: REQUIRED, ISO_DATE }
  next_action_required_from_user: { type: string, constraint: REQUIRED nullable, semantics: "e.g. 'sign Form 28' — null when no user action needed" }
  rto_objection_reason: { type: string, constraint: REQUIRED nullable, semantics: "populated only when current_phase=rto_objection" }

CancellationResult

CancellationResult:
  booking_id: { type: string, constraint: REQUIRED }
  cancelled_at: { type: string, constraint: REQUIRED, ISO_DATETIME }
  cancellation_fee_inr: { type: int, constraint: REQUIRED, INR_INTEGER, ≥0 }
  refund_amount_inr: { type: int, constraint: REQUIRED, INR_INTEGER, ≥0 }
  refund_eta_days: { type: int, constraint: REQUIRED, 0-30 }
  documents_return_method: { type: enum, constraint: REQUIRED, STRICT ENUM §6, values: [doorstep_return, pickup_from_agent, courier] }

FORBIDDEN FIELDS

  • paid_placement_score, ad_bid, sponsored_rank, promotion_priority, kickback_amount
  • artificial_urgency_text
  • ai_generated_photo for agent / document imagery
  • commission_padded_price — govt fees must be pass-through, cannot be padded
  • forged_signature_acceptable — partners CANNOT forge buyer/seller signatures
  • inflated_timeline_promise — cannot promise timeline below RTO's published average

SECTION 6 — CONTROLLED VOCABULARIES

vehicle.registration_state:
  values: ["AP","AR","AS","BR","CG","GA","GJ","HR","HP","JH","KA","KL","MP","MH","MN","ML","MZ","NL","OD","PB","RJ","SK","TN","TS","TR","UP","UK","WB","AN","CH","DN","DD","DL","JK","LA","LD","PY"]

transfer_scope.action_type:
  values:
    ownership_transfer:       "Change name to new owner (used vehicle purchase)"
    hypothecation_removal:    "Remove bank lien after loan closure"
    address_change:           "Change address on RC (intra-state)"
    inter_state_transfer:     "Move RC to different state (NOC + re-registration)"
    duplicate_rc:             "Issue duplicate RC (original lost/damaged)"

parties.user_role:
  values:
    buyer:                          "User bought a vehicle, transferring to their name"
    seller:                         "User sold, transferring out of their name"
    sole_owner_changing_address:    "User is changing their own RC address"
    bank_releasing_hypothecation:   "Bank initiating hypothecation removal post-loan-closure"

agent_type:
  values:
    licensed_dsa_agent:          "State-licensed Direct Selling Agent for RTO"
    oem_branded_service:         "Vehicle OEM's used-car / RC service (Maruti True Value, etc.)"
    vehicle_marketplace_service: "Used vehicle marketplace's RC transfer service (Cars24, Spinny)"
    independent_rto_consultant:  "Independent licensed RTO consultant"

current_phase:
  values:
    documents_collected:       "Docs picked up from user"
    verification:              "Docs being verified"
    rto_submission_pending:    "Verified, queue for RTO submission"
    rto_submitted:             "Submitted to RTO with case_id"
    rto_in_review:             "RTO processing"
    rto_objection:             "RTO raised an objection — user action needed"
    rto_approved:              "RTO approved, new RC printing"
    new_rc_printed:            "New RC printed, ready for dispatch"
    new_rc_dispatched:         "RC dispatched to user"
    completed:                 "RC delivered + signed receipt"
    cancelled:                 "User cancelled before completion"
    rejected:                  "RTO rejected; partner refunds per policy"

payment_due_at:
  values: { 50_percent_now_balance_on_completion, on_completion, milestone_based }

documents_return_method: { values: { doorstep_return, pickup_from_agent, courier } }

SECTION 7 — TTBS DIMENSIONS

TIME (weight = 0.20):
  signals_used:
    - estimated_timeline_days for the chosen action_type
    - express_processing_available + express_timeline_days
    - capabilities.doorstep_document_pickup
  weighting:
    timeline: 0.55
    express: 0.30
    doorstep: 0.15

TASTE (weight = 0.15):
  signals_used:
    - agent_type matching user DNA preference (some prefer OEM-branded, some marketplace-attached)
    - capabilities.handles specific declared scope items
  weighting:
    type: 0.50
    capability_match: 0.50

BUDGET (weight = 0.20):
  signals_used:
    - pricing.total_inr (within max_acceptable_cost_inr)
    - pricing.govt_fee_separation_disclosed (transparency bonus)
  weighting:
    total: 0.75
    transparency: 0.25

SAFETY (weight = 0.45):
  signals_used:
    - rto_dsa_license_number (mandatory floor; null = filtered out)
    - guarantees.timeline_guarantee_days
    - guarantees.refund_on_failure_pct
    - guarantees.legal_liability_coverage_inr
    - ratings.on_time_completion_pct_last_90d
    - ratings.rejection_rate_pct_last_90d (LOWER better — high rejection = agent error)
  weighting:
    license: 0.15  # binary floor
    timeline_guarantee: 0.15
    refund: 0.15
    legal_coverage: 0.15
    on_time: 0.20
    low_rejection: 0.20
  user_band_handling:
    fast: relax legal_coverage threshold
    balanced: standard
    flexible: prefer 100% on_time + 0% rejection agents even at premium

SECTION 8 — COMPLETION CONTRACT

POST /api/v1/cpc/mcp_provider/<your_partner_id>
Body:
{
  "intent":           "auto.book_rc_transfer",
  "external_id":      "<booking_id>",
  "request_id":       "<request_id>",
  "amount_inr":       3500,    // NET (partner service fee + supplier margin only — NOT govt fees)
  "gst_inr":          630,
  "tips_inr":         0,
  "pass_through_inr": 1800,    // govt fees + stamp duty + smart card fee remitted to RTO
  "closed_at":        "2026-06-04T16:00:00+05:30",
  "status":           "completed",
  "action_type": "ownership_transfer",
  "rto_case_id": "TS09-RC-2026-987654",
  "new_rc_dispatched": true,
  "completion_within_guarantee": true
}

Important: PASS-THROUGH RULE — govt fees (RTO + stamp duty + smart card) go in pass_through_inr. Only partner's service margin is in amount_inr. TOMO charges 10% × amount_inr only. Partners falsely reporting govt fees as their revenue = suspension.

HMAC, 5-min replay, NET-only commission.


SECTION 9 — WIDGET

RcTransferWidget (planned).

Field mapping:
  - RcAgent.name → header
  - agent_type + authorised_rtos badges → subline 1
  - estimated_timeline_days[action_type] + express_timeline_days → "X-Y days" pill
  - pricing.total_inr (with govt_fee_separation_disclosed visible) → price row
  - guarantees.refund_on_failure_pct → "X% refund if missed" pill
  - ratings.on_time_completion_pct_last_90d → "X% on-time" pill
  - ratings.rejection_rate_pct_last_90d → "X% rejection rate" pill (color-coded lower=green)
  - capabilities.doorstep_document_pickup → green doorstep badge

Post-booking:
  - RcTransferStatus.current_phase → progress timeline visualisation
  - next_action_required_from_user → highlighted call-to-action row

SECTION 10 — CACHING POLICY

Call TTL Rationale
search_rc_agents 120s Agent rosters change slowly
book_rc_transfer NO CACHE Idempotent by request_id
get_transfer_status NO CACHE Live status
cancel_rc_transfer NO CACHE
Agent static (license, authorised_rtos, capabilities) 24h Static

SECTION 11 — ERROR CODES

Code HTTP Meaning Retry
INVALID_REQUEST 400 Malformed No
RATE_LIMITED 429 Throttle 1, 2s
INTERNAL_ERROR 500 Partner failure 2, exp
SIGNATURE_INVALID 401 (webhook) HMAC fail No
VEHICLE_NOT_FOUND_IN_VAHAN 422 Registration not in govt VAHAN database No
RTO_NOT_AUTHORISED 422 Partner not licensed for that RTO No
DOCUMENTS_INCOMPLETE 422 (advisory) Partner returns which docs are still needed No (user uploads more)
KYC_MISMATCH 422 Buyer/seller KYC doesn't match RTO records No
BANK_NOC_REQUIRED 422 Hypothecation removal needs bank NOC No
INTER_STATE_NOC_PENDING 200 (advisory) Inter-state transfer waiting on origin RTO NOC n/a
RTO_OBJECTION_RAISED 200 (status) get_status returns rto_objection_reason n/a
RTO_REJECTED 200 (status) Final rejection n/a; partner refunds per policy
POST_SUBMISSION_CANCEL_NOT_ALLOWED 409 (cancel) Already submitted to RTO; user must withdraw via RTO process No

SECTION 12 — SANDBOX → PRODUCTION CHECKLIST

[ ] All four tools implemented
[ ] At least 3 RC agents covering different RTOs in TS / KA / MH (or partner's primary states)
[ ] rto_dsa_license_number for each agent verifiable on state transport dept site
[ ] authorised_rtos array correctly maps to license scope
[ ] All controlled vocabularies respected
[ ] HMAC signing verified
[ ] amount_inr is NET (partner service fee only)
[ ] pass_through_inr correctly captures govt fees (verified against RTO receipt)
[ ] govt_fee_separation_disclosed=true (user sees breakdown)
[ ] document_acknowledgement_url returns signed receipt PDF
[ ] No forbidden fields (especially forged_signature_acceptable)
[ ] SLA p95 met
[ ] Live status updates verified across all current_phase transitions
[ ] Compliance docs: GSTIN, DSA license, professional indemnity insurance cert, privacy policy URL
[ ] IT Act 2000 §43A compliant document handling (encryption-at-rest + audit log)

SECTION 13 — ANTI-FABRICATION RULES

RULE 1: No paid_placement / ad / kickback. Rejects response.

RULE 2: rto_dsa_license_number MUST be real, current, and verifiable on the
        issuing state's transport department site. Mock / expired / borrowed =
        immediate suspension + report to state transport dept.

RULE 3: govt_fee_separation_disclosed MUST be true. Padding govt fees into
        service_fee_inr to hide commission = customer-deception + criminal
        cheating offence under IPC = immediate suspension + criminal reporting.

RULE 4: estimated_timeline_days must respect the RTO's published average
        processing time for that action_type. Promising 5-day inter-state
        transfer when RTO average is 45 days = customer-harm + suspension.

RULE 5: guarantees.refund_on_failure_pct must be honoured. Declining a
        refund when timeline missed = suspension after 2 incidents.
        TOMO tracks via CPC completion_within_guarantee flag.

RULE 6: ratings.rejection_rate_pct_last_90d must be computed from real RTO
        rejection events. Inflating success rate by hiding rejections =
        suspension. TOMO cross-checks via VAHAN portal status sampling.

RULE 7: forged_signature_acceptable is absolutely forbidden. Partners forging
        buyer/seller signatures = criminal forgery (IPC §463/§464) +
        immediate suspension + criminal reporting + customer harm.

RULE 8: AI-generated agent / document photos forbidden. Real photos only.

RULE 9: No artificial_urgency_text. RC transfer urgency is real (insurance
        renewal, traffic stops); partner cannot embellish ("Cops will fine
        you tomorrow!" without basis).

RULE 10: No "Top Pick" / "TOMO Recommended" badges. TTBS source-blind.

RULE 11: documents_required list must be HONEST. Padding required docs to
         delay / extort = suspension. TOMO cross-references against RTO's
         official document checklist.

RULE 12: amount_inr in CPC is partner SERVICE FEE only. Reporting govt fees
         as partner revenue to inflate commission base = suspension. TOMO
         audits via partner's GST returns vs CPC ledger.

RULE 13: legal_liability_coverage_inr claims must be backed by uploaded
         professional indemnity insurance policy. False coverage claims
         leave the user exposed if partner errs = suspension.

RULE 14: Partner must IT Act 2000 §43A-compliant document handling: docs
         encrypted at rest, deleted within 90 days of completion, audit
         log maintained. Partners using unencrypted Google Drive / WhatsApp
         for buyer/seller PAN cards = customer harm = suspension.

RULE 15: For ownership_transfer, partner MUST verify Form 29 + Form 30 are
         signed by ORIGINAL parties (in-person OCR + photo proof). Accepting
         scanned forwarded forms without verification = fraud risk = suspension.

VERSION HISTORY

v1.0.0 — 2026-05-12 — Initial spec. NET commission base (service fee only;
                       govt fees pass-through). Safety-DOMINANT (0.45) —
                       mishandled RC transfer leaves seller liable for
                       buyer's accidents/traffic violations. Forgery rules
                       criminal. IT Act compliance first-class.