---
title: "Transaction Follow-Up Evidence Check"
method: POST
path: "/api/locus-transaction-follow-up"
tags: ["transaction", "follow-up", "homebuyer", "land", "pre-development", "commercial-lease", "renovation", "basement", "soil", "terrain", "due-diligence", "reports", "x402", "category:reports"]
---

# Transaction Follow-Up Evidence Check

`POST /api/locus-transaction-follow-up`

## Request

- Base URL: `https://api.locus.report`
- URL: `https://api.locus.report/api/locus-transaction-follow-up`
- Auth: API key in header `PAYMENT-SIGNATURE`

Public-record packet for homebuyer, investor, developer, tenant, or renovation profiles. Renovation adds parcel, exact-subject permits, USDA soil, terrain, flood, wetlands, and county radon. Profiles control evidence and charges. Thin evidence is free; no readiness or approval finding. npx @velinussage/locus-agent-skill add.

## Request body

- object
  - `address` string
  - `parcelReference` object
    - `parcelId` string, required
    - `state` string, required
    - `county` string, required
  - `point` object
    - `latitude` number, required
    - `longitude` number, required
  - `intent` 'homebuyer_due_diligence' | 'land_investor_due_diligence' | 'developer_predevelopment' | 'commercial_tenant_due_diligence' | 'renovation_planning', required
  - `transactionStage` 'early_screen' | 'under_contract' | 'pre_closing' | 'pre_lease' | 'pre_application' | 'pre_construction'
  - `projectArchetype` 'residential' | 'vacant_land' | 'multifamily' | 'retail' | 'restaurant' | 'office' | 'industrial' | 'logistics' | 'mixed_use' | 'other'
  - `requestedAreaContext` string[]: Optional area context to attach for commercial-tenant diligence. It never counts toward the premises-evidence charge threshold.
  - `statedUse` string: Caller-supplied question-framing context only; never treated as an official fact or proof the use is allowed.
  - `projectType` string: Caller-supplied question-framing context only; does not select evidence tools.
  - `suiteOrUnit` string: Caller-supplied premises precision. Without this, occupancy evidence remains parcel- or building-level.

## Response `200`

Successful paid artifact, or a free pre-charge diagnostic when the request is outside current coverage.

- union
  - object
    - `kind` 'transaction_follow_up', required
    - `charged` false
    - `state` 'follow_up_items_found' | 'checked_no_follow_up_items_in_answered_components' | 'incomplete_evidence' | 'source_unavailable', required
    - `intent` 'homebuyer_due_diligence' | 'land_investor_due_diligence' | 'developer_predevelopment' | 'commercial_tenant_due_diligence' | 'renovation_planning', required
    - `profileTitle` string, required
    - `subject` object, required
    - `callerContext` object, required
    - `groups` object[], required
    - `threshold` object, required
      - `met` boolean, required
      - `answeredComponents` integer, required
      - `answeredGroups` integer, required
      - `missing` string[], required
    - `followUpItems` object[], required
      - `id` string, required
      - `status` 'open' | 'awaiting_authority' | 'resolved_with_evidence', required
      - `question` string, required
      - `evidenceNeeded` string[], required
      - `resolutionEvidence` object[], required
        - `sourceUrl` string, uri, required
        - `recordId` string
        - `observedAt` string, required
      - `supersedes` string[], required
      - `group` 'subject_identity' | 'use_occupancy_permits' | 'physical_land' | 'environmental_records' | 'access_infrastructure' | 'change_policy' | 'cost_transfer_timing' | 'area_operating_context', required
      - `factualBasis` string, required
      - `recordIds` string[], required
      - `citations` object[], required
        - `sourceName` string, required
        - `sourceUrl` string, uri, required
        - `recordId` string
        - `fetchedAt` string
        - `sourceVersion` string
      - `verifyNext` object, required
        - `action` string, required
        - `with` string, required
        - `url` string, uri
    - `unansweredQuestions` string[], required
    - `handoffs` object[], required
    - `timeline` object[], required
    - `caveats` string[], required
    - `boundary` string, required
  - object
    - `id` string, required
    - `generatedAt` string, required
    - `summary` string, required
    - `queriedAddress` string
    - `reportType` string, required
    - `responseMode` 'compact', required
    - `artifact` object, required
      - `reportId` string, required
      - `canonicalHash` string, required
      - `available` boolean, required
      - `access` string, required
    - `transactionFollowUp` object, required
      - `kind` 'transaction_follow_up', required
      - `charged` false
      - `state` 'follow_up_items_found' | 'checked_no_follow_up_items_in_answered_components' | 'incomplete_evidence' | 'source_unavailable', required
      - `intent` 'homebuyer_due_diligence' | 'land_investor_due_diligence' | 'developer_predevelopment' | 'commercial_tenant_due_diligence' | 'renovation_planning', required
      - `profileTitle` string, required
      - `subject` object, required
      - `callerContext` object, required
      - `groups` object[], required
      - `threshold` object, required
        - `met` boolean, required
        - `answeredComponents` integer, required
        - `answeredGroups` integer, required
        - `missing` string[], required
      - `followUpItems` object[], required
        - `id` string, required
        - `status` 'open' | 'awaiting_authority' | 'resolved_with_evidence', required
        - `question` string, required
        - `evidenceNeeded` string[], required
        - `resolutionEvidence` object[], required
          - `sourceUrl` string, uri, required
          - `recordId` string
          - `observedAt` string, required
        - `supersedes` string[], required
        - `group` 'subject_identity' | 'use_occupancy_permits' | 'physical_land' | 'environmental_records' | 'access_infrastructure' | 'change_policy' | 'cost_transfer_timing' | 'area_operating_context', required
        - `factualBasis` string, required
        - `recordIds` string[], required
        - `citations` object[], required
          - `sourceName` string, required
          - `sourceUrl` string, uri, required
          - `recordId` string
          - `fetchedAt` string
          - `sourceVersion` string
        - `verifyNext` object, required
          - `action` string, required
          - `with` string, required
          - `url` string, uri
      - `unansweredQuestions` string[], required
      - `handoffs` object[], required
      - `timeline` object[], required
      - `caveats` string[], required
      - `boundary` string, required

## Other responses

- `400`: Invalid request body.
- `402`: Payment Required. For x402 v2, repeat the identical request with a valid PAYMENT-SIGNATURE header (legacy X-PAYMENT is accepted for compatibility). MPP is disabled for this lifecycle-bound tool.

---

[API](https://skmtc.dev/locus/apis/locus-api.md) · [All operations](https://skmtc.dev/locus/apis/locus-api/llms.txt) · [OpenAPI document](https://skmtc.dev/locus/apis/locus-api/revisions/ba7786b74adb?raw)
