Skip to Content
API Reference

API Reference

This is a concise reference for the public exports from scopra.

Policy

Policy defines a business rule that can be evaluated by a PolicyPipeline.

new Policy({ id: "policy-id", name: "Policy name", description: "Optional summary.", instruction: "Evaluator instructions.", denial: "Denial text.", evaluator, confidence: 0.8, escalation, });

PolicyOptions

FieldTypeRequiredDescription
idstringYesStable identifier used to match evaluator findings.
namestringYesHuman-readable policy name.
descriptionstringNoSummary of what the policy protects.
instructionstringYesInstruction passed to the evaluator.
denialstringYesText returned when the policy denies.
evaluatorScopraModel | PolicyEvaluatorNoPer-policy evaluator override.
confidencenumberNoMinimum failed-finding confidence required to deny.
escalationPolicyEscalationOptionsNoReview-only nested policy evaluation for low-confidence findings.

PolicyPipeline

PolicyPipeline evaluates requests against configured policies.

const pipeline = new PolicyPipeline({ evaluator, policies, system, abortSignal, modelOptions, }); const decision = await pipeline.evaluate(request);

Evaluation Requests

type EvaluationRequest = | { type: "input"; content: string } | { type: "output"; content: string } | { type: "tool"; name: string; arguments: Record<string, unknown> };

Decisions

PolicyDecision is a discriminated union. Check allowed before reading blocking violations.

if (decision.allowed) { decision.violations; // [] } else { decision.violations; // PolicyViolation[] }

Evaluator Types

type PolicyEvaluator = ( context: PolicyEvaluatorContext, ) => readonly PolicyFinding[] | Promise<readonly PolicyFinding[]>; type PolicyFinding = { policyId: string; passed: boolean; reason?: string; confidence?: number; };

Model Adapters

ExportDescription
openai(client, model)Adapts the official OpenAI SDK client.
anthropic(client, model, options?)Adapts the official Anthropic SDK client.
vercel(model)Adapts a Vercel AI SDK language model.
tanstack(adapter)Adapts a TanStack AI text adapter.

anthropic(...) accepts AnthropicAdapterOptions with an optional maxTokens default for requests where modelOptions.max_tokens is not provided.

Built-In Policy Classes

ExportConstructor options
AgentScopePolicyAgentScopePolicyOptions with required scope.
CopyrightPolicyCommonPolicyOptions
FinancialAdvicePolicyCommonPolicyOptions
LegalAdvicePolicyCommonPolicyOptions
MedicalAdvicePolicyCommonPolicyOptions
NoSecretsPolicyCommonPolicyOptions
PersonalDataPolicyCommonPolicyOptions
PromptInjectionPolicyCommonPolicyOptions
RegulatedAdvicePolicyCommonPolicyOptions
SocialEngineeringPolicyCommonPolicyOptions
UnsafeToolUsePolicyCommonPolicyOptions

generateViolationResponse

generateViolationResponse(model, decision, options) creates user-facing denial copy from a denied decision.

See the Violation Responses guide for usage patterns and option guidance.

const response = await generateViolationResponse(model, decision, { locale: "en-US", instructions: "Use a concise support tone.", abortSignal, modelOptions, });
Last updated on