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). |
JSON Schema
{
"$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.
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.