Skip to main content
Glama

Corply — Start and run your company

Record an operating fact

record_operating_fact

Record a typed, versioned company or subject fact and freshly resolve the plan. High-impact facts become canonical only with the registry's required confirmation/evidence. Never infer immigration status, work authorization, tax/legal conclusions, or other restricted facts; record explicit evidence or a qualified professional determination. A non-promoted candidate is not safe to treat as true. Prerequisite: authenticated active company access plus every prerequisite stated above. Canonicality: invokes the shared backend action; trust the returned actual_tool_output and context_engineering instead of adding a state-recovery call. Idempotency: obey the tool-specific retry key or guarantee; if none is stated, inspect refreshed state before retrying. Confirmation boundary: no additional confirmation is needed for this read, reversible save, explicit fact/evidence record, link preparation, plan refresh, or action pre-authorized by a standing founder-configured policy.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
valueYesTyped JSON value matching the inspected fact definition.
factKeyYesRegistry key without company./subject. prefix, e.g. entity.formed or work.authorization_basis.
companyIdNocorply_companies.id. May be omitted only when this connection has exactly one company.
expiresAtNo
itemLimitYesMaximum items returned per actionable/blocked/waiting section.
sourceRefYesStable provenance reference; do not put a secret or raw document body here.
subjectIdNoRequired for subject-scoped facts (people, locations, products, offerings, customers, vendors, contracts, awards, accounts, or obligations); omit for company facts.
confidenceNo
provenanceNoNon-secret structured provenance metadata.
sourceTypeYesProvenance class, e.g. user_assertion, document, external_system, operator, or professional.
trustLevelNo
effectiveToNo
effectiveFromNo
questionLimitYesMaximum targeted missing-fact questions returned.
_corply_contextNo
confirmationKindYesnone
evidenceEventIdsNo
sourceObservedAtNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • removedInput schema / $defs
      Removed value: -{
      -  "__schema0": {
      -    "anyOf": [
      -      {
      -        "type": "string"
      -      },
      -      {
      -        "type": "number"
      -      },
      -      {
      -        "type": "boolean"
      -      },
      -      {
      -        "type": "null"
      -      },
      -      {
      -        "items": {
      -          "$ref": "#/$defs/__schema0"
      -        },
      -        "type": "array"
      -      },
      -      {
      -        "additionalProperties": {
      -          "$ref": "#/$defs/__schema0"
      -        },
      -        "propertyNames": {
      -          "type": "string"
      -        },
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  "__schema1": {
      -    "anyOf": [
      -      {
      -        "type": "string"
      -      },
      -      {
      -        "type": "number"
      -      },
      -      {
      -        "type": "boolean"
      -      },
      -      {
      -        "type": "null"
      -      },
      -      {
      -        "items": {
      -          "$ref": "#/$defs/__schema1"
      -        },
      -        "type": "array"
      -      },
      -      {
      -        "additionalProperties": {
      -          "$ref": "#/$defs/__schema1"
      -        },
      -        "propertyNames": {
      -          "type": "string"
      -        },
      -        "type": "object"
      -      }
      -    ]
      -  }
      -}
    • removedInput schema / properties / _corply_context / description
      Removed value: -"Echo context_engineering.context_session from the prior Corply result."
    • changedInput schema / properties / companyId / description
      Previous value: -"corply_companies.id. May be omitted only when the active organization has exactly one company."New value: +"corply_companies.id. May be omitted only when this connection has exactly one company."
    • removedInput schema / properties / provenance / additionalProperties / $ref
      Removed value: -"#/$defs/__schema1"
    • addedInput schema / properties / provenance / additionalProperties / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "type": "null"
      +  },
      +  {
      +    "items": {},
      +    "type": "array"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "propertyNames": {
      +      "type": "string"
      +    },
      +    "type": "object"
      +  }
      +]
    • removedInput schema / properties / value / $ref
      Removed value: -"#/$defs/__schema0"
    • addedInput schema / properties / value / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "type": "null"
      +  },
      +  {
      +    "items": {},
      +    "type": "array"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "propertyNames": {
      +      "type": "string"
      +    },
      +    "type": "object"
      +  }
      +]
  2. Changed1 schema field changed
    • addedInput schema / properties / _corply_context
      Added value: +{
      +  "additionalProperties": false,
      +  "dependentRequired": {
      +    "receipt": [
      +      "id"
      +    ]
      +  },
      +  "description": "Echo context_engineering.context_session from the prior Corply result.",
      +  "properties": {
      +    "id": {
      +      "maxLength": 200,
      +      "minLength": 16,
      +      "type": "string"
      +    },
      +    "receipt": {
      +      "maxLength": 2048,
      +      "minLength": 16,
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  3. Added

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only set the safety profile (not read-only, not destructive, closed world); the description adds substantive behavior — canonicalization via shared backend action, idempotency/retry-key handling, confirmation boundaries, and that a non-promoted candidate is not safe to treat as true. The phrase 'no additional confirmation is needed for this read' is loose boilerplate given readOnlyHint=false, but it sits inside a generic no-confirmation list rather than a genuine safety claim.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core constraint (record typed fact + resolve plan + evidence requirement) is front-loaded, but the 'Canonicality / Idempotency / Confirmation boundary' block reads as reusable generic boilerplate that does not earn its length for this specific tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 18-param, output-schema-less tool, the description covers the behavioral contract reasonably but omits what the call returns (plan sections, missing-fact questions) and leaves half the parameters unexplained. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 18 parameters and only ~50% schema description coverage, the description is expected to compensate but does not. It never explains parameters only the schema covers or obscures, such as itemLimit/questionLimit (which govern returned actionable/blocked/waiting sections and missing-fact questions) or confirmationKind/evidenceEventIds pairing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a concrete verb+resource: 'Record a typed, versioned company or subject fact and freshly resolve the plan.' That distinguishes it from pure evidence/event siblings like record_operating_evidence and record_operating_event, though those siblings are not named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives real guardrails — never infer restricted facts (immigration status, work authorization, tax/legal conclusions), require evidence or a professional determination, and a prerequisite of authenticated active company access. However, it never states when to choose this over the closely related record_operating_event / record_operating_evidence / submit_operating_fact_evidence siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.