Examples · µLang Git production contract
ForgeToolCall
Every call to an upstream MCP tool is one governed decision: catalog-pinned, allow-listed and bounded.
- Entity
ToolCallRequest· 19 fields- Actions
call_tool- Clauses
- 14
- sha256
75bb21216cd7c1d4e2cf9a687a748763f862c2e686f712142c912cfc437374dc- Source
- .forge/rules/ForgeToolCall.ul · raw · open in the playground
// Every call to an upstream MCP tool is one governed decision: catalog-pinned, allow-listed and bounded.
CONTRACT ForgeToolCall {
ENFORCEMENT_MODE: enforced
CONTEXT {
ENTITIES ToolCallRequest {
operation: string
repository_matches_main: bool
requester_is_owner: bool
requester_is_trusted_runtime: bool
server_exists: bool
server_enabled: bool
server_configured: bool
catalog_current: bool
tool_in_catalog: bool
input_schema_hash_matches: bool
arguments_valid: bool
tool_allowed: bool
tool_read_only: bool
write_permitted: bool
calls_used: int
call_limit: int
argument_bytes: int
argument_byte_limit: int
effect_hash: string
}
}
TRIGGER { call_tool() }
PROHIBITION {
FORBID call_tool WHEN ToolCallRequest.operation != "call" [SOURCE:tool_operation]
FORBID call_tool WHEN ToolCallRequest.repository_matches_main == false [SOURCE:tool_repository]
FORBID call_tool WHEN ToolCallRequest.requester_is_owner == false AND ToolCallRequest.requester_is_trusted_runtime == false [SOURCE:tool_authority]
FORBID call_tool WHEN ToolCallRequest.server_exists == false [SOURCE:tool_server_exists]
FORBID call_tool WHEN ToolCallRequest.server_enabled == false [SOURCE:tool_server_enabled]
FORBID call_tool WHEN ToolCallRequest.server_configured == false [SOURCE:tool_server_configured]
FORBID call_tool WHEN ToolCallRequest.catalog_current == false [SOURCE:tool_catalog_current]
FORBID call_tool WHEN ToolCallRequest.tool_in_catalog == false [SOURCE:tool_in_catalog]
FORBID call_tool WHEN ToolCallRequest.input_schema_hash_matches == false [SOURCE:tool_schema_hash]
FORBID call_tool WHEN ToolCallRequest.arguments_valid == false [SOURCE:tool_arguments_valid]
FORBID call_tool WHEN ToolCallRequest.tool_allowed == false [SOURCE:tool_allowed]
FORBID call_tool WHEN ToolCallRequest.tool_read_only == false AND ToolCallRequest.write_permitted == false [SOURCE:tool_write_permitted]
FORBID call_tool WHEN ToolCallRequest.calls_used >= ToolCallRequest.call_limit [SOURCE:tool_call_limit]
FORBID call_tool WHEN ToolCallRequest.argument_bytes > ToolCallRequest.argument_byte_limit [SOURCE:tool_argument_bytes]
}
OBSERVABILITY { LOG "ForgeToolCall evaluated" ON decision }
}