API Reference

All 12 Rhetra MCP tools. Callable via the Model Context Protocol.

check_permissionPhase 1

Evaluates whether a proposed agent action is permitted, prohibited, or undetermined. Uses three-valued Kleene logic when compiled formulas are available. Falls back to keyword matching otherwise.

Parameters

bearerstring*Party name, role, or ID performing the action
actionstring*Description of the proposed action
contextRecord<string, boolean>Predicate bindings for formula evaluation
asOfDatestringISO 8601 date (default: now)

Returns

verdict, enforcementLevel, applicableNorms, conflicts, openQuestions, reasoning, evaluationMethod

Example

await mcp.callTool("check_permission", {
  bearer: "procurement-bot",
  action: "approve vendor contract for $45,000"
});
get_obligationsPhase 1

Returns all active obligations for a given bearer. Includes conditions, exceptions, deadlines, and source traceability.

Parameters

bearerstring*Party name, role, or ID
asOfDatestringISO 8601 date (default: now)
includeExpiredbooleanInclude expired/revoked obligations

Returns

bearer, obligations[], totalCount, normativeStateTimestamp

Example

await mcp.callTool("get_obligations", {
  bearer: "Seller"
});
detect_conflictsPhase 1

Given proposed structured norms, identifies conflicts with the existing norm graph. Uses topic clustering and cross-layer analysis.

Parameters

normsarray*Proposed norms with modality, bearer, verb, object

Returns

conflicts[], totalConflicts, normativeStateTimestamp

Example

await mcp.callTool("detect_conflicts", {
  norms: [{ modality: "PROHIBITION", bearer: "Agent", verb: "disclose", object: "data" }]
});
ingest_documentPhase 1

Ingests a contract, regulation, or policy into the norm graph. Extracts norms, compiles to formal logic, and builds relationships. Requires an LLM API key.

Parameters

textstring*Full document text
documentTypestringHint: statute, regulation, contract, case
titlestringDocument title

Returns

documentId, normsExtracted, formulasCompiled, norms[], summary

Example

await mcp.callTool("ingest_document", {
  text: contractText,
  title: "Vendor MSA"
});
get_authority_chainPhase 1

Traces the delegation chain to determine whether an actor holds the power to perform a given action.

Parameters

actorstring*Actor name or ID
powerstring*Power being exercised

Returns

holdsPower, chain[], rootAuthority, reasoning

Example

await mcp.callTool("get_authority_chain", {
  actor: "procurement-bot",
  power: "approve expenditures"
});
impact_analysisPhase 1

Given a norm change, computes its effects on the existing graph. Identifies directly and transitively affected norms, new conflicts, and required actions.

Parameters

normIdstring*ID of the norm being changed
changeTypestring*ADDED, REMOVED, MODIFIED, STRENGTHENED, WEAKENED
descriptionstring*Description of the change

Returns

directlyAffected, transitivelyAffected, newConflicts, requiredActions, summary

Example

await mcp.callTool("impact_analysis", {
  normId: "norm-123",
  changeType: "STRENGTHENED",
  description: "Data retention increased from 5 to 7 years"
});
create_normPhase 2

Records an agent-to-agent commitment. Checks for conflicts (rejects if contradiction exists), generates Hohfeldian correlatives, and compiles to formal logic.

Parameters

modalitystring*OBLIGATION, PROHIBITION, PERMISSION, or POWER
bearerstring*Party bearing the norm
beneficiarystringParty benefiting from the norm
verbstring*Action verb
objectstring*Action object
strengthstringSTRICT, BEST_EFFORTS, REASONABLE_EFFORTS, GOOD_FAITH

Returns

created, norm, correlative, blockingConflicts, warnings

Example

await mcp.callTool("create_norm", {
  modality: "OBLIGATION",
  bearer: "bot-a",
  beneficiary: "bot-b",
  verb: "deliver",
  object: "vendor assessment report"
});
update_norm_statusPhase 2

Transitions a norm's status. SATISFY marks an obligation as fulfilled. REVOKE terminates a norm (respects survival clauses). BREACH marks a missed deadline and activates consequences.

Parameters

normIdstring*ID of the norm
transitionstring*SATISFY, REVOKE, or BREACH

Returns

success, previousStatus, newStatus, consequencesActivated, reasoning

Example

await mcp.callTool("update_norm_status", {
  normId: "norm-456",
  transition: "SATISFY"
});
get_normative_positionPhase 2

Returns the complete normative state for a bearer: all active obligations, prohibitions, permissions, powers, and pending deadlines. Supports agent scoping.

Parameters

bearerstring*Party name, role, or ID
agentIdstringRegistered agent ID for scoped filtering

Returns

obligations, prohibitions, permissions, powers, pendingDeadlines, totalActiveNorms

Example

await mcp.callTool("get_normative_position", {
  bearer: "procurement-bot",
  agentId: "procurement-bot"
});
exercise_powerPhase 3

Exercises a Hohfeldian power to delegate norms to another agent. Validates the principal holds the power, then creates norms for the delegate.

Parameters

principalstring*Party exercising the power
powerstring*Power being exercised
delegatestring*Party receiving delegated norms
normsarray*Norms to create for the delegate

Returns

exercised, powerNormId, delegatedNorms[], reasoning

Example

await mcp.callTool("exercise_power", {
  principal: "Manager",
  power: "delegate procurement",
  delegate: "procurement-bot",
  norms: [
    { modality: "OBLIGATION", verb: "review", object: "vendor proposals" },
    { modality: "PERMISSION", verb: "contact", object: "vendors directly" }
  ]
});
get_normative_profilePhase 3

Returns an agent's normative track record. Other agents can query this before delegating or accepting commitments.

Parameters

bearerstring*Party name or ID

Returns

obligationsMet, obligationsBreached, obligationsOutstanding, reliabilityRatio, activePowers

Example

await mcp.callTool("get_normative_profile", {
  bearer: "procurement-bot"
});
// { obligationsMet: 47, obligationsBreached: 2, reliabilityRatio: 0.96 }
register_agentScoping

Registers an agent with its capabilities and roles. Once registered, query tools filter to norms relevant to the agent's capabilities. Agents aren't employees — only applicable norms are shown.

Parameters

agentIdstring*Unique agent identifier
agentNamestring*Human-readable name
capabilitiesstring[]*What this agent can do
actingAsstring[]*Party roles this agent acts as

Returns

registered, agentId, capabilities, actingAs

Example

await mcp.callTool("register_agent", {
  agentId: "email-bot",
  agentName: "Email Bot",
  capabilities: ["send-email", "access-data"],
  actingAs: ["Customer"]
});