addedInput schema / properties / api_key / description
Added value: +"API key for this call. Omit to fall back to the Authorization: Bearer / X-API-Key request header (streamable-HTTP only), then the VHGENGINE_API_KEY env var (the stdio default). No key resolvable -> unauthorized."
addedInput schema / properties / idempotency_key / description
Added value: +"Caller-chosen replay key (any string, unique per intended effect). A repeat call with the SAME key returns the stored result and is NEVER charged twice; the same key with different arguments is an idempotency_conflict. Omit and every call is a fresh, separately charged operation."
addedInput schema / properties / platform / description
Added value: +"Target platform, which selects the length/format conventions the hooks are written and scored against. Defaults to tiktok when omitted."
changedInput schema / properties / tags / anyOf
Previous value: -[
- {
- "items": {
- "maxLength": 40,
- "minLength": 1,
- "pattern": "^[a-z0-9_-]+$",
- "type": "string"
- },
- "maxItems": 5,
- "minItems": 1,
- "type": "array"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "items": {
+ "maxLength": 40,
+ "minLength": 1,
+ "pattern": "^[a-z0-9_-]+$",
+ "type": "string"
+ },
+ "maxItems": 5,
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+]
addedInput schema / properties / tags / description
Added value: +"1-5 lowercase slug tags ([a-z0-9_-], <=40 chars) stamped on this call's usage event so a fleet can attribute spend per campaign. Omit for no tagging. Filter later with get_usage(tag=...) / list_hooks(tag=...)."
addedInput schema / properties / tags / items
Added value: +{
+ "maxLength": 40,
+ "minLength": 1,
+ "pattern": "^[a-z0-9_-]+$",
+ "type": "string"
+}
addedInput schema / properties / tags / maxItems
Added value: +5
addedInput schema / properties / text / description
Added value: +"The hook line to score, 3-300 chars. Any text is accepted (it does not have to be one VHGENGINE generated) and it is never persisted as a hook you own."
addedInput schema / properties / topic
Added value: +{
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "minLength": 3,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "description": "The subject this text was written FOR. Pass the SAME topic string a generate call used and this reproduces the exact score.total that generate served for the hook: the scorer's verbatim-echo penalty only fires when it is told the topic, so a hook that repeats its own subject scores up to 8 points higher without it. Omit to score the text on its own (unchanged behaviour). Two caveats on exactness: a hook flagged contains_placeholder_stat was scored with a fabricated-number penalty this cannot apply, and a total capped at the deterministic template ceiling says so in score.notes at verbosity=full.",
+ "maxLength": 200,
+ "minLength": 3,
+ "title": "Topic"
+}
addedInput schema / properties / verbosity / description
Added value: +"How much of the response envelope to return: minimal (ids/text/totals only), standard (the default), full (adds per-dimension score attribution and timings). Shapes the RESPONSE only, never what is generated, persisted, hashed for idempotency, or charged."
addedOutput schema / description
Added value: +"A deterministic 5-dimension craft score with rewrite tips. Never a view prediction."
addedOutput schema / properties
Added value: +{
+ "confidence": {
+ "description": "How much weight to put on this score.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "credits_charged": {
+ "description": "Credits this call actually cost.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "credits_remaining": {
+ "description": "Your balance AFTER this charge.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "disclaimer": {
+ "description": "The honest limits of the scorer. Worth surfacing to your human.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "replayed": {
+ "description": "true when an idempotency_key replayed a stored result, so nothing was charged again. The credits_charged below is what the ORIGINAL call cost.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "replayed_at_charge": {
+ "description": "true when the replay was detected at the charge boundary rather than up front; either way you are billed exactly once.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "request_id": {
+ "description": "Id of this call. Keep it: get_usage(request_id=...) itemises exactly what it charged, and it identifies the call in a support question.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "score": {
+ "description": "Per-dimension scores plus `total`.",
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "suggestions": {
+ "description": "Concrete rewrite tips.",
+ "type": [
+ "array",
+ "null"
+ ]
+ },
+ "verdict": {
+ "description": "One-line read of the total.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+}
removedOutput schema / title
Removed value: -"score_hookDictOutput"