Vaquill AI · Schema

NdaTriage

One NDA triage: its screen, or its progress toward one.

LegalStatutesRegulationsLegal ResearchLawComplianceLegal TechnologyGovernment DataMCPIndiaContracts

Properties

Name Type Description
id string Public identifier, `ndt_` followed by 32 hex characters.
matterId string `mat_` identifier of the matter this triage belongs to.
status object Triage status, using the same five public values as an operation. While `queued` or `running`, `criteria` is empty and the scalar fields are absent. That is the truthful shape of a screen that has not
classification object The screen's own verdict: `green` (standard approval), `yellow` (counsel review) or `red` (significant issues).
effectiveClassification object The verdict after layering your playbook on top, which is the one to act on. A deal-breaker flips this to `red` even where the screen said `green`. Equal to `classification` when no playbook applied.
summary string Overall assessment, in prose.
ndaType object Structure of the agreement: `mutual`, `unilateral_disclosing`, `unilateral_receiving`, or `unknown`.
counterpartyName object Counterparty, echoed from the request.
playbookId object The playbook the triage actually ran against. Absent when it ran against the built-in defaults, so the two cases can be told apart after the fact.
jurisdiction object Jurisdiction the default positions were drawn from.
criteria array The ten screening criteria and their results.
passCount integer How many criteria passed.
warnCount integer How many criteria drew a warning.
failCount integer How many criteria failed.
keyIssues array The issues that need attention first.
routingRecommendation object What to do next, given the classification.
estimatedTimeline object How long resolution is expected to take, for example `Same day`.
missingCarveouts array Standard carve-outs the NDA does not have. The one finding that cannot be expressed as a criterion result, because there is nothing there to assess.
problematicProvisions array Provisions that do not belong in an NDA at all, for example a non-compete or an assignment of IP.
parseWarning object Set when the model's output only partly parsed, which means the screen may be incomplete. Present is the difference between routing on it and asking a human first.
createdAt string When the triage was created (RFC 3339).
completedAt object When the triage reached a terminal status (RFC 3339).
View JSON Schema on GitHub

JSON Schema

vaquill-ai-nda-triage-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/vaquill-ai/main/json-schema/vaquill-ai-nda-triage-schema.json",
  "title": "NdaTriage",
  "description": "One NDA triage: its screen, or its progress toward one.",
  "x-generated": "2026-10-07",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/vaquill-ai-workspace-openapi.yml#/components/schemas/NdaTriage",
  "properties": {
    "id": {
      "type": "string",
      "title": "Id",
      "description": "Public identifier, `ndt_` followed by 32 hex characters."
    },
    "matterId": {
      "type": "string",
      "title": "Matterid",
      "description": "`mat_` identifier of the matter this triage belongs to."
    },
    "status": {
      "$ref": "#/$defs/OperationStatus",
      "description": "Triage status, using the same five public values as an operation. While `queued` or `running`, `criteria` is empty and the scalar fields are absent. That is the truthful shape of a screen that has not happened yet, not an error."
    },
    "classification": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Classification",
      "description": "The screen's own verdict: `green` (standard approval), `yellow` (counsel review) or `red` (significant issues)."
    },
    "effectiveClassification": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Effectiveclassification",
      "description": "The verdict after layering your playbook on top, which is the one to act on. A deal-breaker flips this to `red` even where the screen said `green`. Equal to `classification` when no playbook applied."
    },
    "summary": {
      "type": "string",
      "title": "Summary",
      "description": "Overall assessment, in prose.",
      "default": ""
    },
    "ndaType": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Ndatype",
      "description": "Structure of the agreement: `mutual`, `unilateral_disclosing`, `unilateral_receiving`, or `unknown`."
    },
    "counterpartyName": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Counterpartyname",
      "description": "Counterparty, echoed from the request."
    },
    "playbookId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Playbookid",
      "description": "The playbook the triage actually ran against. Absent when it ran against the built-in defaults, so the two cases can be told apart after the fact."
    },
    "jurisdiction": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Jurisdiction",
      "description": "Jurisdiction the default positions were drawn from."
    },
    "criteria": {
      "items": {
        "$ref": "#/$defs/NdaTriageCriterion"
      },
      "type": "array",
      "title": "Criteria",
      "description": "The ten screening criteria and their results."
    },
    "passCount": {
      "type": "integer",
      "title": "Passcount",
      "description": "How many criteria passed.",
      "default": 0
    },
    "warnCount": {
      "type": "integer",
      "title": "Warncount",
      "description": "How many criteria drew a warning.",
      "default": 0
    },
    "failCount": {
      "type": "integer",
      "title": "Failcount",
      "description": "How many criteria failed.",
      "default": 0
    },
    "keyIssues": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Keyissues",
      "description": "The issues that need attention first."
    },
    "routingRecommendation": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Routingrecommendation",
      "description": "What to do next, given the classification."
    },
    "estimatedTimeline": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Estimatedtimeline",
      "description": "How long resolution is expected to take, for example `Same day`."
    },
    "missingCarveouts": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Missingcarveouts",
      "description": "Standard carve-outs the NDA does not have. The one finding that cannot be expressed as a criterion result, because there is nothing there to assess."
    },
    "problematicProvisions": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Problematicprovisions",
      "description": "Provisions that do not belong in an NDA at all, for example a non-compete or an assignment of IP."
    },
    "parseWarning": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Parsewarning",
      "description": "Set when the model's output only partly parsed, which means the screen may be incomplete. Present is the difference between routing on it and asking a human first."
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "title": "Createdat",
      "description": "When the triage was created (RFC 3339)."
    },
    "completedAt": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Completedat",
      "description": "When the triage reached a terminal status (RFC 3339)."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "matterId",
    "status",
    "createdAt"
  ],
  "$defs": {
    "NdaPlaybookAssessment": {
      "properties": {
        "verdict": {
          "type": "string",
          "title": "Verdict",
          "description": "How this criterion measures against the playbook: `meets_standard`, `within_acceptable_range`, `outside_range`, `deal_breaker_hit`, or `not_assessed` when the playbook has no entry for it."
        },
        "playbookPosition": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Playbookposition",
          "description": "The standard position this criterion was measured against."
        },
        "deviationSummary": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Deviationsummary",
          "description": "How this NDA differs from the standard, in one line. For example `Your standard: 5y term cap; this NDA: 10y`."
        },
        "triggeredEscalations": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Triggeredescalations",
          "description": "Which of the playbook's escalation triggers fired on this criterion."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "verdict"
      ],
      "title": "NdaPlaybookAssessment",
      "description": "One criterion measured against the organization's own positions.\n\nComputed deterministically from the playbook, not by the model: the LLM\nknows what a market NDA looks like and only the playbook knows what this\nfirm will sign."
    },
    "NdaTriageCriterion": {
      "properties": {
        "criterionId": {
          "type": "integer",
          "title": "Criterionid",
          "description": "Stable number of this criterion, 1 through 10."
        },
        "criterionName": {
          "type": "string",
          "title": "Criterionname",
          "description": "What the criterion checks."
        },
        "status": {
          "type": "string",
          "title": "Status",
          "description": "The screen's verdict on this criterion: `pass`, `warn`, `fail`, or `not_found` when the NDA is silent."
        },
        "findings": {
          "type": "string",
          "title": "Findings",
          "description": "What the NDA actually says about this criterion."
        },
        "issues": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Issues",
          "description": "Specific problems identified."
        },
        "recommendation": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Recommendation",
          "description": "What to do about this criterion."
        },
        "playbookAssessment": {
          "anyOf": [
            {
              "$ref": "#/$defs/NdaPlaybookAssessment"
            },
            {
              "type": "null"
            }
          ],
          "description": "Verdict against your playbook. Absent when no playbook applied to this criterion."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "criterionId",
        "criterionName",
        "status",
        "findings"
      ],
      "title": "NdaTriageCriterion",
      "description": "One of the ten screening criteria, and what the NDA said about it."
    },
    "OperationStatus": {
      "type": "string",
      "enum": [
        "queued",
        "running",
        "succeeded",
        "failed",
        "cancelled"
      ],
      "title": "OperationStatus",
      "description": "The public five. There is no sixth, and there are no synonyms.\n\nInternal vocabularies spell terminal success `completed`, `ready`,\n`extracted`, `succeeded` and `fresh`; terminal failure `failed` and `error`;\nqueued `pending`, `queued` and `draft`. All of that is collapsed here by\n`app.workspace_api.adapters.status_map`, which refuses to guess."
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/vaquill-ai-nda-triage"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.