Q-ToolCall-50M-Sovereign β€” Agent tool-call generator β€” strict tool + args JSON

Natural-language request in. {tool, args} JSON out. From the allowed list. Or refuse.

What this model does, in one sentence

Given a user request, returns a JSON tool-call of the form {"tool": <name>, "args": {...}}. The model only emits tools from the allowed set in the system prompt and never invents tool names.

Honest performance

  • Task: agent tool routing
  • Metric: json_content (extracted JSON object equals gold (canonicalized))
  • Holdout: n=60 rows, never seen in training, scored row-by-row
  • Score: 100.0% mean
  • Bootstrap CI 95% lower bound: 1.000
  • Gate threshold: 0.95
  • Verdict: PASS at point estimate AND at bootstrap CI lower bound

What it's used for β€” real workflows

  • Agent guardrail layer β€” Before letting a larger LLM emit a tool call, run the request through Q-ToolCall to commit to a tool from the allowed set. Cheap, deterministic gate.
  • Compact in-app assistant β€” A productivity app with create_task / create_reminder / create_calendar_event / send_email actions β€” Q-ToolCall is the routing brain, your existing handlers are the body.
  • Voice-driven productivity tools β€” ASR feeds Q-ToolCall; the parsed JSON drives system actions. No round-trip to a cloud model.
  • Allowlist enforcement β€” Q-ToolCall is trained to NOT invent tool names. That's the part where general agents leak.

What problem this actually solves

Big-model tool-use is non-deterministic: same prompt, different tool name tomorrow. Q-ToolCall is tiny, trained on a closed allowlist, and refuses to go outside it. Use it as the strict structured-output stage before any downstream execution; let the bigger LM do the chat part.

Integration paths

  • MCP-style tool routing β€” Q-ToolCall outputs are already in the {tool, args} shape that MCP servers consume.
  • Q-Office-Suite runtime β€” POST /run/q-toolcall β€” bundled with the other 8 specialists.
  • Pre-flight gate β€” Run before your big model; if Q-ToolCall says refuse, skip the expensive call.

Example

Input:

Tool call. Available: create_reminder, create_task.
"Remind me to send EOD update Thursday 3pm"

Output:

{"tool": "create_reminder", "args": {"datetime": "Thursday 3pm", "note": "send EOD update"}}

What this is NOT

  • Not a general-purpose chatbot. This head does one job and does it consistently. Free-text generation outside the trained task surface will degrade.
  • Not a replacement for a verifier. This is one component in the Qovaryx cluster-shell architecture. The decision-acceptance discipline lives in the wrapper, not in the head.
  • Not reproducible from this card. Weights and audit are public; the crystal corpus, eval gate constants, and training hyperparameters are not.

Proprietary Qovaryx technology β€” built on our own scratch base

This is a 53.5M-parameter sovereign specialist in the Qovaryx Compact Specialist Suite. It is full-fine-tuned from tjarvis91/qovaryx-50m-scratch-base β€” our own scratch-trained base, not a borrowed foundation model.

  • Base: Qovaryx 50M scratch base. Pretrained from random initialization on 491.5M tokens. Not SmolLM2. Not Qwen. Not Llama. Not Mistral. Not Phi. No HuggingFace foundation. No closed-source weights. Every parameter traces back to a Qovaryx training run on Qovaryx hardware.
  • Tokenizer: Qovaryx english_v1 BPE (vocab 32000), built in-house against our own pretraining corpus.
  • Architecture: Qovaryx FinanceDecoder β€” 12 decoder blocks, GQA, RoPE, SwiGLU FFN, RMSNorm, MTP heads, decision head.
  • Recipe: Qovaryx crystallization discipline β€” train the law before replaying the noise.
  • Runs on CPU. No GPU required at inference.

Architecture (Qovaryx proprietary)

  • 53.5M parameters
  • 12 decoder blocks, d_model=512, n_head=8, GQA n_kv_head=2
  • SwiGLU FFN, RoPE positional, RMSNorm
  • Multi-token prediction (MTP) auxiliary heads
  • Decision head for routed-decision tasks
  • Tokenizer: Qovaryx english_v1 BPE, vocab 32000 (in-house build)
  • Pretrained from qovaryx-50m-scratch-base step 60000 β€” 491.5M tokens
  • Full fine-tune (no LoRA, no QLoRA, no adapter): every parameter was updated on the Qovaryx crystal corpus for this specialist

How to load it (Python)

import torch
from tokenizers import Tokenizer
from bleeding_edge.model.decoder import FinanceDecoder, DecoderConfig

tok = Tokenizer.from_file("tokenizer.json")
ckpt = torch.load("pytorch_model.pt", map_location="cpu", weights_only=False)
cfg = DecoderConfig(**{k: v for k, v in ckpt["model_cfg"].items() if k in DecoderConfig.__dataclass_fields__})
cfg.vocab_size = tok.get_vocab_size()
model = FinanceDecoder(cfg).eval()
state = {k.removeprefix("_orig_mod."): v for k, v in ckpt["model_state"].items()}
model.load_state_dict(state, strict=False)

prompt = "Tool call. Available: create_reminder, create_task.\n\"Remind me to send EOD update Thursday 3pm\""
ids = tok.encode(prompt).ids
cur = torch.tensor([ids], dtype=torch.long)
with torch.no_grad():
    for _ in range(120):
        nxt = int(torch.argmax(model(cur, return_decision=False).logits[:, -1, :], dim=-1))
        if nxt == 0: break
        cur = torch.cat([cur, torch.tensor([[nxt]])], dim=1)
print(tok.decode(cur[0].tolist()[len(ids):]))

License & posture

Apache 2.0 for the published weights, model card, and example code.

The Qovaryx scratch base build pipeline, the crystallization corpus, the eval gate constants, the cluster routing policy, and the protected runtime entrypoint are Qovaryx proprietary technology and are not included in this release. Same posture as every previous Qovaryx public release: ship the weights and the audit, not the recipe.

Sibling specialists in the Qovaryx Q-Office-Suite

All nine specialists share the qovaryx-50m-scratch-base and the same audit discipline. Use one directly; use all nine through the cluster shell.

Watermark

This release carries a SHA256 issue fingerprint inside release.json for tamper-detection and attribution.

Community & support

If you find a failure mode this card doesn't cover, open a discussion on this repo or come to the Discord β€” that's how the next crystal corpus gets written.

Downloads last month
9
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for tjarvis91/Q-ToolCall-50M-Sovereign

Finetuned
(9)
this model