v2.1.0
[2.1.0] — 2026-08-19 — get_authoring_conventions: the eleventh tool, and a new tag opens
The Senti Quant Public API grew a new Authoring tag, and with it from 17 operations to
29 — 14 of them now GET, not 10. get_authoring_conventions is the first tool over that
tag: it reads GET /api/v1/authoring/conventions under a new authoring:read scope and
publishes the platform's own MQL5 authoring contract — the hard-safety constraints, the
trading-safety requirements, the static analyzer's forbidden-construct list, and the five
limits ceilings the API enforces on drafts, attachments and registered EAs. Read live on
2026-08-19: maxDrafts 20, maxAttachmentsPerDraft 5, maxAttachmentBytes 65536 (64 KiB),
maxSourceBytes 196608 (192 KiB), maxRegisteredEas 10. Those numbers matter beyond this
release — they are what size the cuts EPIC-7's remaining three
tools make against a payload the API can otherwise grow past a context window
(US-7.1).
This release also lands the substrate the rest of EPIC-7 stands on:
draftPath/DRAFT_NOT_FOUND in src/core/client.ts, extracted from accountPath over a
shared private segmentPath guard rather than copied
(CONTEXT D33) — no path-traversal guard now has a second copy to drift out of
sync with the first.
Added
get_authoring_conventions— the platform's MQL5 authoring contract, as data
(src/tools/authoring/conventions.ts).ConventionsOutputSchema,parseConventions,
formatConventions. No path parameter, no409—client.getis called with ascope
only, nonotFoundMeansorconflictMeans. The tool description tells the model to call
this before generating any MQL5 source: code that violates these rules is rejected by
a static scan before it reaches the compiler, and compile slots are globally serial, so
discovering a rule by failing a compile is expensive and still fails.- Every rule is rendered whole, never summarized. These are instructions a model must
follow, not records it might skim —formatConventionsnumbers every constraint and
requirement and reproduces everyforbiddenConstructs[].patternverbatim, escapes
intact. - The patterns are reported, not evaluated.
patternvalues are regular expressions
the API's own static analyzer applies; this tool does not compile or run them, and says
so — the document types them as bare strings and never names the regex dialect, so
building aRegExpfrom an undeclared dialect would be a crash or a silent mismatch. - No cuts and no
notesfield. The whole response is roughly 2 KB and static per
deploy, so unlikeget_performance_breakdownsandget_equity_timeseriesthere is
nothing here to shape.
- Every rule is rendered whole, never summarized. These are instructions a model must
draftPathandDRAFT_NOT_FOUNDinsrc/core/client.ts— the substrate the other
threeEPIC-7tools build their paths on. A privatesegmentPath(prefix, segments, hint)
now ownsPATH_SEGMENT,encodeURIComponentand the traversal-rejection loop;
accountPathis re-expressed over it with its signature and error message unchanged, and
draftPathis a second prefix over the same guard rather than a second copy of it
(CONTEXT D33).
Notes
- The API's operation count is now 29, not 17 — a new
Authoringtag adds 12 operations,
four of themGET.get_authoring_conventionsis the first of those four;
EPIC-7 tracks the remaining three (get_draft,list_drafts,
list_draft_attachments).