Medical-bill audit, chargeback, contract terminator, lead enrichment, filing integrity.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
ADA / WCAG Lawsuit Shield & DOM Auto-Patcher — Returns a FAIL / REVIEW / PASS verdict for a page's HTML (pasted or fetched from a URL) against the WCAG failures most cited in ADA demand letters: alt text, form labels, unnamed buttons and links, lang, headings, landmarks, skip links, zoom. Each issue carries a CSS selector, source line and fix, with a top-five list, a SARIF 2.1.0 log, a litigation risk score, per-element patched HTML and an int
Page to audit. Provide url or html.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http writerslogic-business https://agents.writerslogic.com/mcp/business
ADA / WCAG Lawsuit Shield & DOM Auto-Patcher — Returns a FAIL / REVIEW / PASS verdict for a page's HTML (pasted or fetched from a URL) against the WCAG failures most cited in ADA demand letters: alt text, form labels, unnamed buttons and links, lang, headings, landmarks, skip links, zoom. Each issue carries a CSS selector, source line and fix, with a top-five list, a SARIF 2.1.0 log, a litigation risk score, per-element patched HTML and an int
| Argument | Type | Description |
|---|---|---|
| url | string | Page to audit. Provide url or html. |
| html | string |
{
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "Page to audit. Provide url or html."
},
"html": {
"type": "string",
"maxLength": 2000000
}
},
"additionalProperties": false
}Age in complete years on a date and the exact dates a minimum or maximum age is reached (leap-day births) — For up to 100 people, computes age in complete years and months on a caller asOf date, the date they reach each minimum age (the birthday) and the first day they exceed each maximum age, and checks min/max age requirements; 29 February births need a declared common-year rule (28 February or 1 March) because jurisdictions differ. Built for an agent checking eligibility (18+, under 65, 21 to buy). I
| Argument | Type | Description |
|---|---|---|
| asOf* | string | |
| items* | array | |
| leapDayRule | string | In common years a 29 February birthday is observed on 28 February or on 1 March depending on the legal context you apply; you must choose. Required if any birth date is 29 February. |
{
"type": "object",
"required": [
"asOf",
"items"
],
"properties": {
"asOf": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"birthDate"
],
"properties": {
"id": {
"type": "string",
"maxLength": 64
},
"birthDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
},
"maxAgeYears": {
"type": "integer",
"maximum": 150,
"minimum": 0,
"description": "Inclusive: age must still be at most this many complete years."
},
"minAgeYears": {
"type": "integer",
"maximum": 150,
"minimum": 0
}
}
},
"maxItems": 100,
"minItems": 1
},
"leapDayRule": {
"enum": [
"feb-28",
"mar-1"
],
"type": "string",
"description": "In common years a 29 February birthday is observed on 28 February or on 1 March depending on the legal context you apply; you must choose. Required if any birth date is 29 February."
}
},
"additionalProperties": false
}Allergen flags in an ingredient list (EU Annex II, US FALCPA + FASTER Act) — Scans an ingredient list for terms tied to the 14 allergens of EU Regulation 1169/2011 Annex II and the 9 US major food allergens (FALCPA plus sesame under the FASTER Act), for an agent or buyer checking a label or recipe. Returns each matched span with its character offsets, the allergen, the regime that lists it, and whether it sits in a 'may contain' clause. Pass the allergens a label declares
| Argument | Type | Description |
|---|---|---|
| declared | array | Allergen keys the label declares. Any detected, non-precautionary allergen missing from this list fails. For jurisdictions=eu, wheat and gluten-cereal cover each other (one Annex II entry). |
| extraTerms | array | Caller synonyms (for example a brand's own ingredient name), matched as literal words. |
| ingredients* | string | Ingredient list or label text, at most 20000 characters. |
| jurisdictions | string | Which list(s) to apply. Default both. EU adds celery, mustard, lupin, molluscs, sulphites and gluten cereals (rye, barley, oats); the US list has no such entries. |
{
"type": "object",
"required": [
"ingredients"
],
"properties": {
"declared": {
"type": "array",
"items": {
"enum": [
"milk",
"egg",
"fish",
"crustacean",
"mollusc",
"peanut",
"tree-nut",
"wheat",
"gluten-cereal",
"soy",
"sesame",
"celery",
"mustard",
"lupin",
"sulphites"
],
"type": "string"
},
"maxItems": 15,
"description": "Allergen keys the label declares. Any detected, non-precautionary allergen missing from this list fails. For jurisdictions=eu, wheat and gluten-cereal cover each other (one Annex II entry)."
},
"extraTerms": {
"type": "array",
"items": {
"type": "object",
"required": [
"term",
"allergen"
],
"properties": {
"term": {
"type": "string",
"maxLength": 60,
"description": "Extra term, at most 6 words."
},
"allergen": {
"enum": [
"milk",
"egg",
"fish",
"crustacean",
"mollusc",
"peanut",
"tree-nut",
"wheat",
"gluten-cereal",
"soy",
"sesame",
"celery",
"mustard",
"lupin",
"sulphites"
],
"type": "string"
}
}
},
"maxItems": 100,
"description": "Caller synonyms (for example a brand's own ingredient name), matched as literal words."
},
"ingredients": {
"type": "string",
"maxLength": 20000,
"description": "Ingredient list or label text, at most 20000 characters."
},
"jurisdictions": {
"enum": [
"eu",
"us",
"both"
],
"type": "string",
"description": "Which list(s) to apply. Default both. EU adds celery, mustard, lupin, molluscs, sulphites and gluten cereals (rye, barley, oats); the US list has no such entries."
}
},
"additionalProperties": false
}Split a money amount into parts that sum exactly to the total — Splits one signed amount into up to 500 parts by weights (or equal parts), in integer minor units of its currency, for an agent dividing a bill, a refund, a fee or a tax. Each share is rounded under the declared mode, then the leftover minor units are assigned by the declared remainder policy, so the parts always sum to the total exactly. Negative totals (refunds) are supported; zero-weight parts
| Argument | Type | Description |
|---|---|---|
| parts | integer | Equal split into this many parts. |
| total* | string | Decimal string such as "-12.50" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats. |
| weights | array | Non-negative decimal-string weights, e.g. ["1","1","2"] or percentages. Give weights or parts. |
| currency | string | ISO 4217 alphabetic code, upper case. |
| exponent | integer | Override the ISO 4217 exponent; required for codes not on the list. |
| rounding | string | Rounding of each share before the residual is moved. Default half-even. half-up: ties away from zero. half-down: ties toward zero. half-even: ties to the even neighbour. up: away from zero. down: toward zero. ceiling: toward +infinity. floor: toward -infinity. |
| remainder | string |
Does this appointment fit: opening hours in the venue's zone, closed days, existing bookings with buffers, minimum notice — Checks one proposed appointment (instant + duration) against a venue's local opening hours per weekday, closed dates or a named holiday calendar, up to 500 existing bookings with a buffer on each side, and a minimum notice measured from a caller-supplied asOf; every violated rule is returned as a witness with the conflicting booking or hour block. Local hours are resolved in the venue's IANA zone
| Argument | Type | Description |
|---|---|---|
| asOf | string | Reference instant for minimum notice. |
| hours* | array | |
| start* | string | |
| weekend | array | Ignored for hours; with a named calendar only its holidays are used. |
| bookings | array | |
| calendar | string | Optional named holiday calendar for closed days (unsupported outside its range). Without it only holidays/weekend you list apply; hours decide the weekdays. |
| holidays | array | Extra non-business dates YYYY-MM-DD (company closures, a calendar we do not carry). |
| timeZone* |
OnRecord statutory clock & redaction auditor — Audits an agency's public-records response and leads with a decision (late, redaction problems, incomplete, pending or no violation found). Computes the statutory response deadline and days late (California CPRA, with the court-day calendar and § 7922.535 extension rules), flags redactions without an exemption citation, passages redacted in one document but readable in another, referenced attachme
| Argument | Type | Description |
|---|---|---|
| asOfDate | string | Observation date when responseDate is omitted; defaults to today (UTC). |
| documents* | array | |
| agencyName | string | Agency that received the request; fills the follow-up letter. |
| requestDate* | string | Date the agency received the request (YYYY-MM-DD or RFC 3339; read in the offset written). |
| jurisdiction* | string | OnRecord jurisdiction code. Only "CA_CPRA" (alias "US-CA") has a statute table; any other value returns clock "unknown_jurisdiction" while document checks still run. |
| responseDate | string | Date of the agency's determination/response. Omit if none yet. |
| requesterName | string | Your name, for the follow-up letter signature. |
Bid coverage: uncovered lines, substitutions, partial quantities and conditional bundles — Checks which required lines of a tender or RFQ are covered by the bids received (up to 200 lines, 30 bidders, 2000 offers), for an agent comparing responses. A line is covered when firm offers (exact item, no condition, no bundle) sum to the required quantity; substitute offers, offers bound to a bundle (all-or-nothing across the lines in that bundle) and offers with a stated condition are reporte
| Argument | Type | Description |
|---|---|---|
| bids* | array | |
| lines* | array |
{
"type": "object",
"required": [
"lines",
"bids"
],
"properties": {
"bids": {
"type": "array",
"items": {
"type": "object",
"required": [
"bidder",
"offers"
],
"properties": {
"bidder": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"offers": {
"type": "array",
"items": {
"type": "object",
"required": [
"line",
"quantity"
],
"properties": {
"line": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"bundle": {
"type": "string",
"maxLength": 80,
"description": "Bundle id: the offer holds only if the bidder is awarded every line carrying the same bundle id."
},
"quantity": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
},
"condition": {
"type": "string",
"maxLength": 200,
"description": "Any stated condition (minimum spend, lead time, award of another lot)."
},
"substitute": {
"type": "boolean",
"description": "The bidder offers a different item than specified."
}
},
"additionalProperties": false
},
"maxItems": 400
}
},
"additionalProperties": false
},
"maxItems": 30,
"minItems": 1
},
"lines": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"quantity"
],
"properties": {
"id": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"quantity": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
}
},
"additionalProperties": false
},
"maxItems": 200,
"minItems": 1
}
},
"additionalProperties": false
}Which cancellation or change tier applies at this moment, and what does it cost? — Given a booking start, the moment of change, the booking amount and a tiered policy whose deadlines are either elapsed hours before start ('48 hours') or local calendar days at a local time ('18:00 the day before' in the venue's zone, DST-correct), returns the applicable tier, its deadline instants, the penalty in minor units under your stated rounding, and when the next tier begins; checks an ass
| Argument | Type | Description |
|---|---|---|
| tiers* | array | |
| startAt* | string | |
| changeAt* | string | The moment of cancellation/change; never read from the clock. |
| currency* | string | |
| rounding* | string | Applied to percentage penalties. |
| timeZone | string | Needed for daysBefore tiers. |
| noShowTier | string | Tier name charged when changeAt is after startAt; default the most severe tier. |
| amountMinor* | integer |
Business-day deadline (clear days, cutoffs, DST) on a named or caller calendar — Computes the date (and optionally the instant) a business-day deadline falls on, for an agent drafting or checking a contract, notice, SLA or partner response window: '10 clear business days' (both endpoints excluded) or 'within 10 business days' (end day counted), forward or backward, with an after-cutoff roll, caller or named holiday calendar and a DST-aware deadline time. Named calendars (US fe
| Argument | Type | Description |
|---|---|---|
| days* | integer | |
| start* | string | Local date YYYY-MM-DD, or local date-time YYYY-MM-DDTHH:MM[:SS] (the notice/receipt moment). Never read from the clock. |
| cutoff | string | Local HH:MM. With a date-time start (direction after), a start strictly later than the cutoff, or on a non-business day, is deemed received on the next business day. 17:00 exactly is on time. Without cutoff there is no roll. |
| weekend | array | Non-business weekdays, 0=Sunday..6=Saturday. Default [0, 6]; use [5, 6] for a Friday/Saturday weekend. |
| calendar* | string | Named holiday calendar with a source and supported date range (outside it the answer is unsupported), weekends-only (Saturday/Sunday only), or caller (only the holidays you list). |
| counting* | string | clear: days strictly between start and deadline, so the deadline is business day N+1. elapsed: the deadline is business day N after start (the end day is counted). |
Convert dates between Gregorian and Hijri (named variants), Hebrew, Persian, Ethiopian; Western and Orthodox Easter — Converts a Gregorian date (or a Hebrew, Persian, Ethiopian or Hijri date) to the other calendars via the runtime's ICU, always naming the Hijri variant (Umm al-Qura, tabular civil, tabular astronomical-epoch, ICU astronomical) and flagging when variants disagree on the day; with mode easter, returns Western (Gregorian computus) and Orthodox (Julian computus, with its Gregorian equivalent) Easter a
| Argument | Type | Description |
|---|---|---|
| to | array | Calendars to convert into; hijri-all returns Umm al-Qura, tabular civil and ICU astronomical (add islamic-tbla explicitly; it differs from civil by its epoch) and fails when they disagree. Default: all non-Hijri plus hijri-all. |
| date | string | convert: Gregorian date. Exactly one of date or from. |
| from | object | |
| mode* | string | |
| years | array | easter: Gregorian years. |
| feasts | boolean | easter: also list Ash Wednesday, Good Friday, Ascension, Pentecost and other moveable feasts. |
{
"type": "object",
"required": [
"mode"
],
"properties": {
"to": {
"type": "array",
"items": {
"enum": [
"hebrew",
"persian",
"ethiopic",
"islamic-umalqura",
"islamic-civil",
"islamic-tbla",
"islamic-icu",
"hijri-all"
],
"type": "string"
},
"maxItems": 8,
"description": "Calendars to convert into; hijri-all returns Umm al-Qura, tabular civil and ICU astronomical (add islamic-tbla explicitly; it differs from civil by its epoch) and fails when they disagree. Default: all non-Hijri plus hijri-all."
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10,
"description": "convert: Gregorian date. Exactly one of date or from."
},
"from": {
"type": "object",
"required": [
"calendar",
"year",
"month",
"day"
],
"properties": {
"day": {
"type": "integer",
"maximum": 30,
"minimum": 1
},
"year": {
"type": "integer",
"maximum": 9999,
"minimum": 1
},
"month": {
"type": "integer",
"maximum": 13,
"minimum": 1,
"description": "Numeric month. Hebrew follows ICU: Tishri=1; leap years have Adar I=6, Adar II=7, Nisan=8 ... Elul=13; common years have Adar=6, Nisan=7 ... Elul=12."
},
"calendar": {
"enum": [
"hebrew",
"persian",
"ethiopic",
"islamic-umalqura",
"islamic-civil",
"islamic-tbla",
"islamic-icu"
],
"type": "string"
}
}
},
"mode": {
"enum": [
"convert",
"easter"
],
"type": "string"
},
"years": {
"type": "array",
"items": {
"type": "integer",
"maximum": 2999,
"minimum": 1583
},
"maxItems": 60,
"minItems": 1,
"description": "easter: Gregorian years."
},
"feasts": {
"type": "boolean",
"description": "easter: also list Ash Wednesday, Good Friday, Ascension, Pentecost and other moveable feasts."
}
},
"additionalProperties": false
}Calibration certificate vs intended use: range, uncertainty and validity — Checks whether an instrument's calibration certificate covers an intended measurement, for an agent about to rely on a reading or accept a calibrated device. Three checks: the intended range [min, max] lies inside the calibrated ranges (touching or overlapping ranges are joined); the stated expanded uncertainty of every calibrated range used is no larger than the required uncertainty; the calibrat
| Argument | Type | Description |
|---|---|---|
| use* | object | |
| asOf* | string | The reference date for validity; required, never defaulted to today. |
| certificate* | object |
{
"type": "object",
"required": [
"certificate",
"use",
"asOf"
],
"properties": {
"use": {
"type": "object",
"required": [
"min",
"max",
"unit"
],
"properties": {
"max": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
},
"min": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
},
"unit": {
"type": "string",
"maxLength": 24,
"minLength": 1
},
"usedOn": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date of the measurement, when different from asOf."
},
"requiredUncertainty": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Largest acceptable expanded uncertainty, absolute, in `unit`."
}
},
"additionalProperties": false
},
"asOf": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "The reference date for validity; required, never defaulted to today."
},
"certificate": {
"type": "object",
"required": [
"unit",
"ranges",
"calibratedOn"
],
"properties": {
"unit": {
"type": "string",
"maxLength": 24,
"minLength": 1
},
"ranges": {
"type": "array",
"items": {
"type": "object",
"required": [
"min",
"max"
],
"properties": {
"max": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
},
"min": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
},
"uncertainty": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Expanded uncertainty over this range, absolute, in `unit`."
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"validUntil": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Due date on the certificate, inclusive."
},
"calibratedOn": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Calendar date YYYY-MM-DD."
},
"intervalMonths": {
"type": "integer",
"maximum": 120,
"minimum": 1,
"description": "Calibration interval when no due date is printed."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}Pack items into the smallest fitting carton (bounded heuristic) — Checks whether up to 50 box-shaped items (axis-aligned, 90-degree rotations, optional this-side-up lock, optional weights) fit into any of up to 20 candidate cartons, and recommends the smallest-volume carton for which a packing was found, with coordinates for every item. For shipping and fulfilment agents sizing a parcel. The packing is a greedy extreme-point HEURISTIC with a fixed step cap, not
| Argument | Type | Description |
|---|---|---|
| boxes* | array | At most 20. Use inner dimensions. |
| items* | array | At most 50 item lines and 50 units in total (sum of qty). |
{
"type": "object",
"required": [
"items",
"boxes"
],
"properties": {
"boxes": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"l",
"w",
"h"
],
"properties": {
"h": {
"type": "number",
"maximum": 100000,
"minimum": 0.001,
"description": "Inner height."
},
"l": {
"type": "number",
"maximum": 100000,
"minimum": 0.001,
"description": "Inner length."
},
"w": {
"type": "number",
"maximum": 100000,
"minimum": 0.001,
"description": "Inner width."
},
"id": {
"type": "string",
"maxLength": 64,
"description": "Carton id (unique)."
},
"maxWeight": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Maximum content weight; requires every item to carry a weight."
}
}
},
"maxItems": 20,
"minItems": 1,
"description": "At most 20. Use inner dimensions."
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"l",
"w",
"h"
],
"properties": {
"h": {
"type": "number",
"maximum": 100000,
"minimum": 0.001,
"description": "Height (the vertical axis when thisSideUp)."
},
"l": {
"type": "number",
"maximum": 100000,
"minimum": 0.001,
"description": "Length, at most 3 decimals."
},
"w": {
"type": "number",
"maximum": 100000,
"minimum": 0.001,
"description": "Width."
},
"id": {
"type": "string",
"maxLength": 64,
"description": "Item id (unique)."
},
"qty": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Copies of this item (default 1)."
},
"weight": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Weight in one unit shared with maxWeight."
},
"thisSideUp": {
"type": "boolean",
"description": "Keep h vertical (only rotation about the vertical axis allowed)."
}
}
},
"maxItems": 50,
"minItems": 1,
"description": "At most 50 item lines and 50 units in total (sum of qty)."
}
},
"additionalProperties": false
}Cash rounding to the smallest payable coin (CHF, CAD, SEK, AUD or a caller rule) — Rounds up to 100 final cash totals to the smallest payable increment, for an agent computing what a customer actually pays in cash or the change owed. Built-in rules exist only for currencies with an official source: CHF 0.05 (Münzverordnung SR 941.101), CAD 0.05 (Government of Canada), SEK 1 (Lag 1970:1029), AUD 0.05 (Consumer Protection WA); any other currency needs a caller increment. Rounds th
| Argument | Type | Description |
|---|---|---|
| items* | array |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"amount"
],
"properties": {
"amount": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
},
"tender": {
"enum": [
"cash",
"electronic"
],
"type": "string",
"description": "Default cash."
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "ISO 4217 alphabetic code, upper case."
},
"rounding": {
"enum": [
"half-up",
"half-down",
"half-even",
"up",
"down",
"ceiling",
"floor"
],
"type": "string",
"description": "Tie mode only: an exact tie between two payable amounts under a caller increment or a built-in rule that states no tie rule. Any other amount rounds to the nearest payable amount, and a tie rule the cited source states (SEK) wins. half-up: ties away from zero. half-down: ties toward zero. half-even: ties to the even neighbour. up: away from zero. down: toward zero. ceiling: toward +infinity. floor: toward -infinity."
},
"increment": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Caller rule: smallest payable amount in major units, e.g. \"0.05\". Overrides the built-in rule."
}
},
"additionalProperties": false
},
"maxItems": 100,
"minItems": 1
}
},
"additionalProperties": false
}E-Commerce Chargeback Representment Builder — Tells a merchant whether to fight or accept a card dispute: scores win probability against the network rubric for the reason code (Visa, Mastercard, Amex, Discover), runs deterministic Visa CE3.0 eligibility and invalid-dispute checks, computes expected recovery net of the contest fee and days to the deadline, and returns a processor-ready submission (summary under 4,000 characters, evidence field
| Argument | Type | Description |
|---|---|---|
| network* | string | |
| evidence* | object | |
| reasonCode* | string | e.g. 10.4, 13.1, 13.3 (Visa); 4837, 4853, 4855 (Mastercard). |
| disputeDate | string | |
| orderDetails* | object | |
| disputeFeeUsd | number | Fee your processor charges to contest the dispute and does not return on a loss; used to net the expected value. |
| responseDeadline | string | Deadline shown in your processor's dispute dashboard (YYYY-MM-DD); days remaining are computed from it. |
Identifier check digits: IBAN, ISBN, GTIN, VIN, ISIN, LEI and more, in a batch — Validates the format and check digit of up to 100 identifiers per call, for an agent about to put an IBAN, ISBN, GTIN/EAN/UPC, container number, VIN, ISIN, CUSIP, SEDOL, LEI, IMO number, BIC or Luhn number into a payment, order or record. Each item is {kind, value}; with kind omitted the engine proposes candidate kinds and answers unknown if two kinds both validate. Reports the normalized form (lo
| Argument | Type | Description |
|---|---|---|
| items* | array |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"value"
],
"properties": {
"kind": {
"enum": [
"iban",
"iso6346",
"gtin",
"isbn10",
"isbn13",
"issn",
"vin",
"isin",
"cusip",
"sedol",
"lei",
"imo",
"bic",
"luhn"
],
"type": "string",
"description": "iban, iso6346 (container), gtin (8/12/13/14), isbn10, isbn13, issn, vin, isin, cusip, sedol, lei, imo, bic (ISO 9362 format only), luhn. Omit to auto-detect (luhn is never auto-detected)."
},
"value": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"strict": {
"type": "boolean",
"description": "VIN only: report a check-digit mismatch as fail even outside US/Canada/Mexico, where position 9 is not mandatory."
}
}
},
"maxItems": 100,
"minItems": 1
}
},
"additionalProperties": false
}Chess move legality, SAN/UCI conversion and next FEN — Checks whether a move (or a sequence of moves) is legal from a FEN position under the FIDE Laws of Chess, for agents that play, annotate or verify chess games. Accepts UCI or SAN, returns the normalized move, the new FEN, check / checkmate / stalemate / insufficient-material flags and, if asked, every legal move; an illegal move names the reason (castling_through_check, ep_exposes_king, moves_into
| Argument | Type | Description |
|---|---|---|
| items* | array | 1 to 50 positions, at most 400 moves in total. |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"fen"
],
"properties": {
"fen": {
"type": "string",
"maxLength": 100,
"description": "Position as a 6-field FEN, or \"startpos\"."
},
"list": {
"type": "boolean",
"description": "Also return every legal move (UCI and SAN) in the final position. At most 20 items per call."
},
"move": {
"type": "string",
"maxLength": 16,
"description": "One move to check from the position, UCI (e2e4, e7e8q, e1g1) or SAN (Nf3, exd5, e8=Q, O-O)."
},
"moves": {
"type": "array",
"items": {
"type": "string",
"maxLength": 16,
"description": "UCI or SAN move."
},
"maxItems": 200,
"description": "Moves played one after another from the position; stops at the first that is not legal. Use either move or moves."
},
"expectFen": {
"type": "string",
"maxLength": 100,
"description": "Optional claim: the FEN you expect after the move(s). Compared on placement, side, castling and capturable en passant (4 or 6 fields)."
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1,
"description": "1 to 50 positions, at most 400 moves in total."
}
},
"additionalProperties": false
}Chord check: identify, spell, key membership, transpose — Names a chord from its notes, spells a chord symbol into notes, tests whether a chord is diatonic to a key, or transposes a chord symbol, using pitch-class arithmetic over a fixed table of 21 chord qualities, for agents handling lead sheets and music metadata. Rule-based and labelled: when several readings are equally valid (C E G A is C6 or Am7/C) or no quality in the table matches, it returns un
| Argument | Type | Description |
|---|---|---|
| key | object | For key-membership. |
| chord | string | Chord symbol, root A-G with optional #/b, quality suffix, optional /bass: Cmaj7, F#m7b5, Bb/D. |
| notes | array | For identify: 2 to 8 notes. |
| prefer | string | Accidentals for a natural root when transposing. Default sharps; a root written with # or b keeps its kind. |
| operation* | string | |
| semitones | integer | For transpose: semitones up (negative down). |
| expectChord | string | Optional claimed chord symbol to verify (identify, transpose). |
| expectNotes | array | Optional claimed notes in order, to verify (spell). |
Rule-based clause tagging (obligation, prohibition, permission, condition, topic) — Tags each contract-style clause you supply with the modal force it expresses (obligation, prohibition, permission, recommendation) and topic cues (definition, condition, termination, payment, confidentiality, liability, governing law, notice, assignment), with the matched cue and its offset. For an agent that must triage many clauses before a human or model reads them. Fixed cue phrases only (plus
| Argument | Type | Description |
|---|---|---|
| expect | array | Tags a clause must carry; a missing one fails. |
| clauses* | array | Up to 100000 characters in total. |
| extraCues | array | Your own cue phrases, matched as literal word sequences. |
{
"type": "object",
"required": [
"clauses"
],
"properties": {
"expect": {
"type": "array",
"items": {
"type": "object",
"required": [
"clause",
"tags"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"description": "Expected tag."
},
"maxItems": 20
},
"clause": {
"type": "integer",
"maximum": 99,
"minimum": 0,
"description": "Clause index."
}
},
"additionalProperties": false
},
"maxItems": 100,
"description": "Tags a clause must carry; a missing one fails."
},
"clauses": {
"type": "array",
"items": {
"type": "string",
"maxLength": 3000,
"description": "One clause."
},
"maxItems": 100,
"minItems": 1,
"description": "Up to 100000 characters in total."
},
"extraCues": {
"type": "array",
"items": {
"type": "object",
"required": [
"tag",
"phrase"
],
"properties": {
"tag": {
"type": "string",
"maxLength": 40,
"description": "Tag to assign."
},
"phrase": {
"type": "string",
"maxLength": 80,
"description": "Literal word phrase (case-insensitive, up to 8 words)."
}
},
"additionalProperties": false
},
"maxItems": 100,
"description": "Your own cue phrases, matched as literal word sequences."
}
},
"additionalProperties": false
}Certificate of analysis vs specification: pass, fail or indeterminate per clause — Checks the values on a certificate of analysis or test report against specification limits clause by clause (up to 200 clauses), for an agent accepting a lot or a supplier's material. Each clause has a parameter, an optional min and max and a unit; each result has a value, an optional reported uncertainty and an optional less-than or greater-than qualifier ("<0.01"). rule simple (default): the rep
| Argument | Type | Description |
|---|---|---|
| rule | string | |
| clauses* | array | |
| results* | array | |
| conversions | array | Caller-supplied unit conversions; none are built in. |
{
"type": "object",
"required": [
"clauses",
"results"
],
"properties": {
"rule": {
"enum": [
"simple",
"guard-banded"
],
"type": "string"
},
"clauses": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"parameter"
],
"properties": {
"id": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"max": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
},
"min": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
},
"unit": {
"type": "string",
"maxLength": 24,
"minLength": 1
},
"parameter": {
"type": "string",
"maxLength": 120,
"minLength": 1
}
},
"additionalProperties": false
},
"maxItems": 200,
"minItems": 1
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"parameter",
"value"
],
"properties": {
"unit": {
"type": "string",
"maxLength": 24,
"minLength": 1
},
"value": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
},
"parameter": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"qualifier": {
"enum": [
"<",
">"
],
"type": "string",
"description": "Censored result: the true value is below / above `value`."
},
"uncertainty": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Expanded uncertainty U (absolute, same unit as value) so the interval is value +/- U."
}
},
"additionalProperties": false
},
"maxItems": 400
},
"conversions": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"to",
"factor"
],
"properties": {
"to": {
"type": "string",
"maxLength": 24,
"minLength": 1
},
"from": {
"type": "string",
"maxLength": 24,
"minLength": 1
},
"factor": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "value in `to` = value in `from` x factor."
}
},
"additionalProperties": false
},
"maxItems": 50,
"description": "Caller-supplied unit conversions; none are built in."
}
},
"additionalProperties": false
}Company identity: name, domain, LEI, VAT, CIK or ticker to one verified legal entity — Resolves a company name, web domain, LEI, EU VAT number, SEC CIK or stock ticker to one legal entity using official free registries in a single call: GLEIF (legal name, other names, addresses, jurisdiction, registry id, direct and ultimate parent), the SEC ticker table (CIK, ticker), the EU VIES VAT service, and Companies House officers when the operator has configured a key. Deterministic matchin
| Argument | Type | Description |
|---|---|---|
| cik | integer | SEC Central Index Key. |
| lei | string | 20-character LEI; check digits are validated (ISO 17442). |
| vat | object | |
| name | string | Company name, with or without legal form. |
| domain | string | Company web domain; only used to guess a name and to prefer matching candidates. It is never fetched. |
| ticker | string | Stock ticker, matched case-insensitively against the SEC table. |
| country | string | ISO 3166-1 alpha-2 hint; raises the score of candidates registered in that country. |
| max_candidates | integer | How many ranked candidates to return. |
SaaS Pricing & Competitor Battlecard Spy — Reads up to 3 competitor sites (homepage and pricing page, fetched in parallel) and returns a deal battlecard in under a minute: a verdict headline with confidence, pricing tiers whose amounts are checked against the page text, a scenario cost comparison computed in code, hidden fees and limits, landmine questions, objection handling, wedge features and a talk track. If a site or model step fails
| Argument | Type | Description |
|---|---|---|
| scenario | object | Optional deal size used to compute monthly and annual cost per verified tier: seats for per-seat prices, monthlyVolume for usage prices. |
| competitorUrls* | array | Competitor homepage or pricing URLs. A same-site pricing page is discovered automatically. |
| ourProductDescription* | string |
{
"type": "object",
"required": [
"ourProductDescription",
"competitorUrls"
],
"properties": {
"scenario": {
"type": "object",
"properties": {
"seats": {
"type": "integer",
"maximum": 100000,
"minimum": 1
},
"monthlyVolume": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0
}
},
"description": "Optional deal size used to compute monthly and annual cost per verified tier: seats for per-seat prices, monthlyVolume for usage prices.",
"additionalProperties": false
},
"competitorUrls": {
"type": "array",
"items": {
"type": "string",
"maxLength": 2048,
"minLength": 3
},
"maxItems": 3,
"minItems": 1,
"description": "Competitor homepage or pricing URLs. A same-site pricing page is discovered automatically."
},
"ourProductDescription": {
"type": "string",
"maxLength": 4000,
"minLength": 20
}
},
"additionalProperties": false
}Dark Pattern Contract & Subscription Exit Lawyer — Paste a contract or Terms URL and get the decision first: send notice by a computed date, or the window has passed. Quotes auto-renewal, notice-window and early-termination traps verbatim, computes the renewal and last-notice dates in code, estimates the renewal cost you avoid from your fee, maps the exit to ROSCA, state automatic-renewal laws and EU/UK consumer law with links, and drafts a notice
| Argument | Type | Description |
|---|---|---|
| termsUrl | string | Terms of Service or cancellation policy URL. Provide termsUrl or contractText. |
| annualFee | number | What you pay per year, USD, if billed annually. Use monthlyFee or annualFee. |
| monthlyFee | number | What you pay per month, USD. Used to compute the dollars at stake. |
| vendorName* | string | |
| contractText | string | |
| customerName | string | |
| customerType | string | |
| signupMethod | string | |
| reasonForExit |
WCAG 2.2 contrast check with the minimal OKLCH lightness fix and colour-blind pair check — Checks up to 50 foreground/background hex pairs against a WCAG 2.2 contrast threshold (4.5 AA text, 3 large text and UI, 7 AAA, or your own) on the unrounded ratio, so 4.499 fails and exactly 4.5 passes, and for a failing pair returns the closest colour by OKLCH lightness (chroma and hue held, gamut-clipped, 8-bit) that meets it. Optionally simulates protanomaly, deuteranomaly and tritanomaly (Mac
| Argument | Type | Description |
|---|---|---|
| level | string | aa-normal 4.5 (default), aa-large 3, aaa-normal 7, aaa-large 4.5, non-text 3 (WCAG 2.2 SC 1.4.3, 1.4.6, 1.4.11). |
| pairs* | array | Foreground/background pairs. |
| fixTarget | string | Which colour to move for a failing pair (default foreground); none skips the fix. |
| threshold | number | Overrides level: the minimum contrast ratio. |
| cvdSeverity | number | Enables the colour-vision-deficiency check at this severity, 0 to 1 (1.0 is dichromacy); between the published 0.1 steps the matrices are interpolated. |
| cvdMinDeltaE | number | Smallest OKLab distance counted as distinguishable (default 0.05, a heuristic, not a standard). |
{
"type": "object",
"required": [
"pairs"
],
"properties": {
"level": {
"enum": [
"aa-normal",
"aa-large",
"aaa-normal",
"aaa-large",
"non-text"
],
"type": "string",
"description": "aa-normal 4.5 (default), aa-large 3, aaa-normal 7, aaa-large 4.5, non-text 3 (WCAG 2.2 SC 1.4.3, 1.4.6, 1.4.11)."
},
"pairs": {
"type": "array",
"items": {
"type": "object",
"required": [
"foreground",
"background"
],
"properties": {
"label": {
"type": "string",
"maxLength": 80,
"description": "Caller label echoed back."
},
"background": {
"type": "string",
"pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
"maxLength": 7,
"description": "#rgb or #rrggbb."
},
"foreground": {
"type": "string",
"pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
"maxLength": 7,
"description": "#rgb or #rrggbb (strict hex; no names, no alpha)."
},
"claimedRatio": {
"type": "number",
"maximum": 21,
"minimum": 1,
"description": "A ratio the caller asserts; compared to the unrounded ratio with a 0.01 tolerance."
}
}
},
"maxItems": 50,
"minItems": 1,
"description": "Foreground/background pairs."
},
"fixTarget": {
"enum": [
"foreground",
"background",
"none"
],
"type": "string",
"description": "Which colour to move for a failing pair (default foreground); none skips the fix."
},
"threshold": {
"type": "number",
"maximum": 21,
"minimum": 1,
"description": "Overrides level: the minimum contrast ratio."
},
"cvdSeverity": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Enables the colour-vision-deficiency check at this severity, 0 to 1 (1.0 is dichromacy); between the published 0.1 steps the matrices are interpolated."
},
"cvdMinDeltaE": {
"type": "number",
"maximum": 2,
"minimum": 0,
"description": "Smallest OKLab distance counted as distinguishable (default 0.05, a heuristic, not a standard)."
}
},
"additionalProperties": false
}Do licences, certificates or insurance policies cover a required period without gaps? — Given a required date range (a contract term, a project, a shipment window) and up to 200 credentials each valid from a date to a date (both inclusive), reports the merged covered ranges, every uncovered gap with its first and last day and length, and whether each checkpoint date is covered; a credential ending the day before the next starts is contiguous. Built for an agent verifying insurance, l
| Argument | Type | Description |
|---|---|---|
| required* | object | |
| checkpoints | array | Specific dates that must be covered (delivery date, audit date). |
| credentials* | array | |
| toleratedGapDays | integer | Gaps up to this many days are reported but do not fail (a grace period you are entitled to). |
{
"type": "object",
"required": [
"required",
"credentials"
],
"properties": {
"required": {
"type": "object",
"required": [
"start",
"end"
],
"properties": {
"end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10,
"description": "Inclusive last day."
},
"start": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
}
}
},
"checkpoints": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
},
"maxItems": 100,
"description": "Specific dates that must be covered (delivery date, audit date)."
},
"credentials": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"validFrom",
"validTo"
],
"properties": {
"id": {
"type": "string",
"maxLength": 64
},
"validTo": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10,
"description": "Inclusive last valid day."
},
"validFrom": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
}
}
},
"maxItems": 200
},
"toleratedGapDays": {
"type": "integer",
"maximum": 365,
"minimum": 0,
"description": "Gaps up to this many days are reported but do not fail (a grace period you are entitled to)."
}
},
"additionalProperties": false
}Cron parse, humanize and next N runs — Parses a POSIX 5-field or Quartz 6/7-field cron expression (plus macros @yearly/@monthly/@weekly/@daily/@hourly), returns a plain-English summary and the next N scheduled runs in a given IANA timezone, and reports if the expression never fires or lands on a DST-ambiguous wall-clock. Handles step syntax, named months and days, Quartz '?'/L/W/# extensions, and the POSIX dom-OR-dow rule when both fie
| Argument | Type | Description |
|---|---|---|
| after | string | ISO-8601 instant: find runs strictly after this. Defaults to 1970-01-01T00:00:00Z. |
| count | integer | How many future runs to return, 1-50. Default 5. |
| flavor | string | Which cron dialect. Defaults to posix (5 fields) or quartz (6/7 fields) based on token count. |
| timezone | string | IANA timezone name, e.g. 'America/Los_Angeles'. Defaults to UTC. |
| expression* | string | The cron expression or macro, e.g. '*/15 9-17 * * 1-5' or '@weekly'. |
{
"type": "object",
"required": [
"expression"
],
"properties": {
"after": {
"type": "string",
"maxLength": 40,
"description": "ISO-8601 instant: find runs strictly after this. Defaults to 1970-01-01T00:00:00Z."
},
"count": {
"type": "integer",
"description": "How many future runs to return, 1-50. Default 5."
},
"flavor": {
"enum": [
"posix",
"quartz"
],
"type": "string",
"description": "Which cron dialect. Defaults to posix (5 fields) or quartz (6/7 fields) based on token count."
},
"timezone": {
"type": "string",
"maxLength": 60,
"description": "IANA timezone name, e.g. 'America/Los_Angeles'. Defaults to UTC."
},
"expression": {
"type": "string",
"maxLength": 200,
"description": "The cron expression or macro, e.g. '*/15 9-17 * * 1-5' or '@weekly'."
}
},
"additionalProperties": false
}Does this date fall on the claimed weekday? (batch, year boundaries and leap days) — Checks up to 200 claims 'Monday 2026-12-28' against the proleptic Gregorian calendar and reports the real weekday, whether the date exists (2026-02-29 does not), and the nearest date carrying the claimed weekday; a claim 'Friday, 13 March' without a year returns the years in a range where it holds. Built for an agent verifying dates in a document, email or itinerary. Gregorian only (no Julian date
| Argument | Type | Description |
|---|---|---|
| items* | array | |
| toYear | integer | |
| fromYear | integer |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"weekday"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10,
"description": "YYYY-MM-DD."
},
"weekday": {
"type": "string",
"pattern": "^[A-Za-z]{3,9}\\.?$",
"maxLength": 10,
"description": "Monday, Mon, mon ..."
},
"monthDay": {
"type": "string",
"pattern": "^\\d{2}-\\d{2}$",
"maxLength": 5,
"description": "MM-DD when the year is unknown; needs fromYear and toYear."
}
}
},
"maxItems": 200,
"minItems": 1
},
"toYear": {
"type": "integer",
"maximum": 2999,
"minimum": 1583
},
"fromYear": {
"type": "integer",
"maximum": 2999,
"minimum": 1583
}
},
"additionalProperties": false
}Verifiable dice roll from a seed, with a re-derivable transcript — Rolls dice notation (for example 4d6kh3+2) from a caller seed with a documented SHA-256 counter-mode stream and returns every die, the kept/dropped marks and a full draw transcript, for agents and referees that need a roll anyone can re-derive. Optionally checks a claimed total or claimed faces against the re-derived roll. Does NOT provide unpredictable randomness: the seed is public input, so any
| Argument | Type | Description |
|---|---|---|
| seed* | string | Caller seed string. Public: the outcome is a pure function of notation and seed. |
| notation* | string | Dice notation: terms of NdM (N 1-100, M 2-1000) or integers joined by + and -; optional kh/kl/dh/dl with a count on a group. At most 20 groups and 1000 dice. |
| expectRolls | array | Optional claimed faces in notation order, before keep/drop marks. |
| expectTotal | integer | Optional claimed total to verify. |
| includeTranscript | boolean | Default true. False drops blocks and draws (the transcript digest stays). |
{
"type": "object",
"required": [
"notation",
"seed"
],
"properties": {
"seed": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Caller seed string. Public: the outcome is a pure function of notation and seed."
},
"notation": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Dice notation: terms of NdM (N 1-100, M 2-1000) or integers joined by + and -; optional kh/kl/dh/dl with a count on a group. At most 20 groups and 1000 dice."
},
"expectRolls": {
"type": "array",
"items": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "A claimed face."
},
"maxItems": 1000,
"description": "Optional claimed faces in notation order, before keep/drop marks."
},
"expectTotal": {
"type": "integer",
"maximum": 100000000,
"minimum": -100000000,
"description": "Optional claimed total to verify."
},
"includeTranscript": {
"type": "boolean",
"description": "Default true. False drops blocks and draws (the transcript digest stays)."
}
},
"additionalProperties": false
}Is this document still current, or superseded by a newer one? — Given the target document id, the supplied set of documents (id, effective date, which ids each one supersedes, withdrawn flag) and a reference date, reports whether the target is superseded or withdrawn as of that date, following supersession chains, and names the superseding document and its date. For an agent about to rely on a standard, price list, policy or datasheet revision. It can only see
| Argument | Type | Description |
|---|---|---|
| asOf* | string | Reference date: a superseding document counts only if effective on or before it. |
| target* | string | Id of the document being relied on. |
| documents* | array | The documents the caller knows of, including the target. |
| listComplete | boolean | The caller asserts documents holds every document that could supersede the target. Required for a pass. |
{
"type": "object",
"required": [
"target",
"documents",
"asOf"
],
"properties": {
"asOf": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"maxLength": 40,
"description": "Reference date: a superseding document counts only if effective on or before it."
},
"target": {
"type": "string",
"maxLength": 200,
"description": "Id of the document being relied on."
},
"documents": {
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"description": "Document id."
},
"withdrawn": {
"type": "boolean",
"description": "Withdrawn without replacement."
},
"supersedes": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"description": "Id this document replaces."
},
"maxItems": 50
},
"effectiveDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"maxLength": 40
}
},
"additionalProperties": false
},
"maxItems": 200,
"minItems": 1,
"description": "The documents the caller knows of, including the target."
},
"listComplete": {
"type": "boolean",
"description": "The caller asserts documents holds every document that could supersede the target. Required for a pass."
}
},
"additionalProperties": false
}DST gap and overlap check for local times and stated offsets in an IANA zone — Checks up to 100 local date-times (YYYY-MM-DDTHH:MM) or offset timestamps against an IANA time zone and reports whether each wall time exists once, never (spring-forward gap) or twice (fall-back overlap), with every real instant and the offset in force; also lists a zone's offset transitions in a year. Built for an agent scheduling a meeting, cron job or deadline in someone else's zone. Uses the r
| Argument | Type | Description |
|---|---|---|
| items* | array | |
| transitionsIn | object |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"timeZone"
],
"properties": {
"local": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?$",
"maxLength": 30,
"description": "Wall time without offset. Exactly one of local or timestamp."
},
"timeZone": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_+-]*(/[A-Za-z0-9_+-]+){0,2}$",
"maxLength": 64
},
"timestamp": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|z|[+-]\\d{2}:?\\d{2})$",
"maxLength": 36,
"description": "RFC 3339 timestamp with offset; checked for consistency with the zone's offset at that instant; Z names UTC and makes no local claim, so it is never a mismatch."
}
}
},
"maxItems": 100,
"minItems": 1
},
"transitionsIn": {
"type": "object",
"required": [
"timeZone",
"year"
],
"properties": {
"year": {
"type": "integer",
"maximum": 2199,
"minimum": 1900
},
"timeZone": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_+-]*(/[A-Za-z0-9_+-]+){0,2}$",
"maxLength": 64
}
}
}
},
"additionalProperties": false
}Electrical arithmetic and resistor colour codes — Computes Ohm's law and power from any two of V, I, R, P; series and parallel resistance with optional tolerance bounds; a voltage divider (with optional load); an LED series resistor rounded up to a preferred E-series value; conductor voltage drop from a caller-supplied resistivity; decodes or encodes 3 to 6 band IEC 60062 resistor colour codes; and tests whether a value is an official E3 to E192
| Argument | Type | Description |
|---|---|---|
| op* | string | ohm | series | parallel | divider | led-resistor | line-drop | colour-decode | colour-encode | e-series. |
| r1 | number | divider: top resistor, ohms. |
| r2 | number | divider: bottom resistor, ohms. |
| vin | number | divider: input volts. |
| bands | array | colour-decode: 3 to 6 colours read from the head end. |
| claim | object | Optional map from an output value name (e.g. resistance, vout, minResistance) to the number you expect. |
| power | number | ohm: watts. |
| rLoad | number | divider: optional load across r2, ohms. |
| series |
Photographic exposure value: solve aperture, shutter, ISO or EV, with equivalent exposures — Given any three of aperture (f-number), shutter time in seconds, ISO and scene EV at ISO 100, solves the fourth from EV = log2(N^2/t) and EV_S = EV_100 + log2(S/100), names the nearest one-third-stop f-number, and lists the equivalent shutter time at each f-number from f/1 to f/32. Given all four, checks that they agree within a tolerance in stops. Built for camera, lighting and image-generation a
| Argument | Type | Description |
|---|---|---|
| iso | number | ISO speed S. |
| ev100 | number | Scene light as exposure value at ISO 100. |
| aperture | number | f-number N. |
| shutterSeconds | number | Exposure time t in seconds. |
| toleranceStops | number | When all four are given: largest EV100 disagreement accepted (default 0.05). |
{
"type": "object",
"required": [],
"properties": {
"iso": {
"type": "number",
"maximum": 10000000,
"minimum": 1,
"description": "ISO speed S."
},
"ev100": {
"type": "number",
"maximum": 30,
"minimum": -10,
"description": "Scene light as exposure value at ISO 100."
},
"aperture": {
"type": "number",
"maximum": 256,
"minimum": 0.5,
"description": "f-number N."
},
"shutterSeconds": {
"type": "number",
"maximum": 3600,
"minimum": 0.000001,
"description": "Exposure time t in seconds."
},
"toleranceStops": {
"type": "number",
"maximum": 3,
"minimum": 0,
"description": "When all four are given: largest EV100 disagreement accepted (default 0.05)."
}
},
"additionalProperties": false
}Farmland Soil, Water & Drought Report — Before buying, leasing or planting a US parcel, reads the USDA NRCS soil survey at a point (lat/lon or US address): map unit, prime farmland class, land capability class and subclass, drainage, hydric rating, flooding and ponding frequency, water table and bedrock depth, slope, pH, organic matter, available water capacity (percent-weighted across components) and building-site ratings with shrink-s
| Argument | Type | Description |
|---|---|---|
| lat | number | WGS84 latitude. Give lat with lon, or address. |
| lon | number | WGS84 longitude. |
| use | string | Intended use to rate. Omit to rate all four. |
| address | string | US street address, geocoded by the US Census geocoder. |
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "WGS84 latitude. Give lat with lon, or address."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "WGS84 longitude."
},
"use": {
"enum": [
"cropland",
"pasture",
"orchard",
"building_site"
],
"type": "string",
"description": "Intended use to rate. Omit to rate all four."
},
"address": {
"type": "string",
"maxLength": 200,
"minLength": 5,
"description": "US street address, geocoded by the US Census geocoder."
}
},
"additionalProperties": false
}SEC Filing Integrity Check: XBRL Footing, Tie-Outs, Revisions — Before a figure from a US 10-K or 10-Q is quoted, re-checks it with exact integer arithmetic on SEC XBRL data: balance sheet identity (including noncontrolling and temporary equity), net income bridge, cash flow to balance sheet cash tie-out with restricted cash and roll-forward, EPS recomputation, every calculation-linkbase relationship the filing declares, and same-period values that a later 10-
| Argument | Type | Description |
|---|---|---|
| cik | string | SEC CIK, digits only. |
| checks | array | Checks to run; default all six. |
| period | string | FY selects the 10-K; Q1 to Q3 select 10-Qs (there is no Q4 filing). |
| ticker | string | Exchange ticker, e.g. AAPL or BRK.B. Give exactly one of ticker or cik. |
| accession | string | Accession number of a 10-K or 10-Q, e.g. 0000320193-25-000079. Give this or fiscal_year with period. |
| fiscal_year | integer | Fiscal year of the filing's DocumentFiscalYearFocus. |
| rounding_mode | string | exact: any nonzero difference fails. reported_precision (default): differences within half a unit of the filing's reporting scale per rounded figure pass and are flagged. |
Fiscal year, quarter and period for a date: month-aligned or 52/53-week (4-4-5, 4-5-4, 5-4-4) calendars — Maps up to 100 dates to a fiscal year, quarter, period and week for a caller-defined fiscal calendar: a month-aligned year (starts on day 1 of a named month) or a 52/53-week year ending on a given weekday last in or closest to a month end, in a 4-4-5, 4-5-4 or 5-4-4 pattern with the 53rd week appended to the final period; detects 53-week years and checks an asserted fiscal year, quarter or period.
| Argument | Type | Description |
|---|---|---|
| type* | string | |
| items* | array | |
| endRule | string | 52-53-week: last endWeekday in endMonth, or the endWeekday closest to endMonth's last day. |
| pattern | string | 52-53-week: weeks per period within each quarter. |
| endMonth | integer | 52-53-week: month near whose end the year ends. |
| yearLabel* | string | start: the fiscal year is named for the calendar year it begins in. end: for the calendar year it ends in (US federal FY2027 begins 2026-10-01). |
| endWeekday | integer | 52-53-week: weekday the year ends on, 0=Sunday. |
| startMonth |
Font converter: TTF/OTF, WOFF and WOFF2 containers, with the font's own embedding permission checked — Repackages a font you supply as base64 (up to 2 MB) between the sfnt (.ttf/.otf), WOFF and WOFF2 containers, for an agent or build step that needs a web font in a particular format: every table is carried over unchanged, the result is read back and its table digest compared with the source, and the font's own OS/2 embedding bits are checked first (a restricted font fails and nothing is returned).
| Argument | Type | Description |
|---|---|---|
| to* | string | Target container. sfnt is the plain .ttf/.otf file. |
| fontBase64* | string | Base64 of a .ttf, .otf, .woff or .woff2 file (not a .ttc collection), up to 2 MB. |
{
"type": "object",
"required": [
"fontBase64",
"to"
],
"properties": {
"to": {
"enum": [
"sfnt",
"woff",
"woff2"
],
"type": "string",
"description": "Target container. sfnt is the plain .ttf/.otf file."
},
"fontBase64": {
"type": "string",
"maxLength": 2796204,
"minLength": 8,
"description": "Base64 of a .ttf, .otf, .woff or .woff2 file (not a .ttc collection), up to 2 MB."
}
},
"additionalProperties": false
}Font coverage: does this font have glyphs for this text, and does it fit the box — Reads a TrueType or OpenType font you supply as base64 (up to 2 MB) and a text of up to 5000 characters, for an agent about to render text in a fixed font: lists every code point with no glyph in the cmap (formats 4 and 12) and sums the hmtx advance widths to test a width in pixels. Every offset is bounds-checked. It does not apply kerning, ligatures or shaping (combining marks and complex scripts
| Argument | Type | Description |
|---|---|---|
| text* | string | |
| fontBase64* | string | Base64 of a .ttf or .otf file (sfnt, not WOFF). |
| fontSizePx | number | Needed for a width check. |
| maxWidthPx | number | Box width; the widest line (split on \n) must fit. |
{
"type": "object",
"required": [
"fontBase64",
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 5000,
"minLength": 1
},
"fontBase64": {
"type": "string",
"maxLength": 2796204,
"minLength": 8,
"description": "Base64 of a .ttf or .otf file (sfnt, not WOFF)."
},
"fontSizePx": {
"type": "number",
"maximum": 2000,
"minimum": 1,
"description": "Needed for a width check."
},
"maxWidthPx": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Box width; the widest line (split on \\n) must fit."
}
},
"additionalProperties": false
}@font-face block generated from the font file: family, weight, style, stretch and unicode-range read from the font — Reads a font you supply as base64 (up to 2 MB, any of TTF, OTF, WOFF, WOFF2) and writes an @font-face rule for the URLs you will serve it from, for an agent or build step generating CSS: font-family from the name table, font-weight from OS/2 (or the fvar wght range of a variable font), font-style, font-stretch, and unicode-range from the cmap. Names and URLs are escaped as CSS strings. It does not
| Argument | Type | Description |
|---|---|---|
| family | string | Overrides the family name read from the font. |
| sources* | array | One entry per file you serve, best format first. |
| fontBase64* | string | Base64 of a .ttf, .otf, .woff or .woff2 file (not a .ttc collection), up to 2 MB. |
| fontDisplay | string | Default swap. |
| includeUnicodeRange | boolean | Default true; omitted automatically for fonts with more than 300 cmap ranges. |
{
"type": "object",
"required": [
"fontBase64",
"sources"
],
"properties": {
"family": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Overrides the family name read from the font."
},
"sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"url",
"format"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "Where you will serve this file; written into url(). Quotes, backslashes and control characters are escaped."
},
"format": {
"enum": [
"woff2",
"woff",
"truetype",
"opentype"
],
"type": "string",
"description": "The format() hint for that file."
}
},
"additionalProperties": false
},
"maxItems": 4,
"minItems": 1,
"description": "One entry per file you serve, best format first."
},
"fontBase64": {
"type": "string",
"maxLength": 2796204,
"minLength": 8,
"description": "Base64 of a .ttf, .otf, .woff or .woff2 file (not a .ttc collection), up to 2 MB."
},
"fontDisplay": {
"enum": [
"auto",
"block",
"swap",
"fallback",
"optional"
],
"type": "string",
"description": "Default swap."
},
"includeUnicodeRange": {
"type": "boolean",
"description": "Default true; omitted automatically for fonts with more than 300 cmap ranges."
}
},
"additionalProperties": false
}Font to SVG: a line of text drawn as SVG paths from the font's own TrueType outlines — Reads a TrueType-outline font you supply as base64 (up to 2 MB; TTF, WOFF or WOFF2) and returns up to 200 characters of single-line text as an SVG made of <path> outlines (one per distinct glyph, placed with <use>), plus each glyph's path data in font units (y up), for an agent producing a logo, icon label or image that must not depend on the font being installed. Composite glyphs and their transf
| Argument | Type | Description |
|---|---|---|
| text* | string | One line; line breaks are not laid out. |
| fontBase64* | string | Base64 of a .ttf, .otf, .woff or .woff2 file (not a .ttc collection), up to 2 MB. |
| fontSizePx | number | Default 100. |
{
"type": "object",
"required": [
"fontBase64",
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "One line; line breaks are not laid out."
},
"fontBase64": {
"type": "string",
"maxLength": 2796204,
"minLength": 8,
"description": "Base64 of a .ttf, .otf, .woff or .woff2 file (not a .ttc collection), up to 2 MB."
},
"fontSizePx": {
"type": "number",
"maximum": 1000,
"minimum": 1,
"description": "Default 100."
}
},
"additionalProperties": false
}Formula weight from a chemical formula (Hill notation, IUPAC/CIAAW weights) — Parses a chemical formula (parentheses, brackets, hydrate dots such as CuSO4·5H2O, an ignored charge) for a chemist or an agent that must check a molar mass, and returns the Hill-notation formula, the formula weight in g/mol from the CIAAW abridged standard atomic weights summed exactly in decimal arithmetic, and mass fractions. Pass claimedWeight and tolerance to check a stated molar mass. Elemen
| Argument | Type | Description |
|---|---|---|
| mode | string | formula (default) computes the weight; smiles validates syntax only. |
| smiles | string | A single SMILES string without a name, at most 200 characters (mode smiles). |
| formula | string | Chemical formula, at most 200 characters. Element symbols are case-sensitive (Co is cobalt, CO is carbon monoxide). Hydrate separators: . · • *. A trailing charge such as ^2+, 2- after a bracket, or a bare + or - is ignored. |
| tolerance | number | Allowed absolute difference from claimedWeight in g/mol. Default 0.01. |
| claimedWeight | number | Stated molar mass to check, g/mol. |
| elementWeights | array | Caller-chosen weights; they take precedence over the table and are the only way to weigh elements without a standard atomic weight. |
{
"type": "object",
"required": [],
"properties": {
"mode": {
"enum": [
"formula",
"smiles"
],
"type": "string",
"description": "formula (default) computes the weight; smiles validates syntax only."
},
"smiles": {
"type": "string",
"maxLength": 200,
"description": "A single SMILES string without a name, at most 200 characters (mode smiles)."
},
"formula": {
"type": "string",
"maxLength": 200,
"description": "Chemical formula, at most 200 characters. Element symbols are case-sensitive (Co is cobalt, CO is carbon monoxide). Hydrate separators: . · • *. A trailing charge such as ^2+, 2- after a bracket, or a bare + or - is ignored."
},
"tolerance": {
"type": "number",
"maximum": 1000,
"minimum": 0,
"description": "Allowed absolute difference from claimedWeight in g/mol. Default 0.01."
},
"claimedWeight": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Stated molar mass to check, g/mol."
},
"elementWeights": {
"type": "array",
"items": {
"type": "object",
"required": [
"symbol",
"weight"
],
"properties": {
"symbol": {
"type": "string",
"maxLength": 3,
"description": "Element symbol."
},
"weight": {
"type": "number",
"maximum": 1000,
"minimum": 0.0001,
"description": "Atomic weight to use, g/mol."
}
}
},
"maxItems": 20,
"description": "Caller-chosen weights; they take precedence over the table and are the only way to weigh elements without a standard atomic weight."
}
},
"additionalProperties": false
}Great-circle and WGS-84 ellipsoidal distance between coordinates — Computes the haversine (IUGG mean-radius sphere) and Vincenty inverse (WGS-84 ellipsoid) distance in metres plus initial and final bearings for up to 100 coordinate pairs, and optionally checks a claimed distance within a tolerance. Vincenty is millimetre-accurate except for nearly antipodal pairs, where it does not converge: those pairs return vincentyMeters null, status unknown and the haversine
| Argument | Type | Description |
|---|---|---|
| pairs* | array | Coordinate pairs. |
| claimBasis | string | Which distance claimedMeters is compared against (default vincenty). |
| toleranceMeters | number | Allowed difference for claimedMeters (default 1). |
{
"type": "object",
"required": [
"pairs"
],
"properties": {
"pairs": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"to"
],
"properties": {
"to": {
"type": "object",
"required": [
"latitude",
"longitude"
],
"properties": {
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Degrees north, -90 to 90."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Degrees east, -180 to 180."
}
}
},
"from": {
"type": "object",
"required": [
"latitude",
"longitude"
],
"properties": {
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Degrees north, -90 to 90."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Degrees east, -180 to 180."
}
}
},
"label": {
"type": "string",
"maxLength": 80,
"description": "Caller label echoed back."
},
"claimedMeters": {
"type": "number",
"maximum": 21000000,
"minimum": 0,
"description": "Optional distance to verify, metres."
}
}
},
"maxItems": 100,
"minItems": 1,
"description": "Coordinate pairs."
},
"claimBasis": {
"enum": [
"vincenty",
"haversine"
],
"type": "string",
"description": "Which distance claimedMeters is compared against (default vincenty)."
},
"toleranceMeters": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Allowed difference for claimedMeters (default 1)."
}
},
"additionalProperties": false
}GTIN hierarchy: GTIN-8/12/13/14 forms, GS1 prefix, packaging-level link — Takes up to 100 GTINs and, for an agent reconciling a product feed or order lines, validates each check digit, converts it to the 14-digit form, reads the indicator digit and GS1 Prefix (restricted-circulation, ISBN/ISSN range, coupon), and, when a parent GTIN is given, checks the two share one base item (the packaging-level link). It does not look up the brand owner, the product or the country of
| Argument | Type | Description |
|---|---|---|
| items* | array |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"gtin"
],
"properties": {
"gtin": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"parent": {
"type": "string",
"maxLength": 32,
"description": "Another GTIN that should be a packaging level of the same base item (for example the case GTIN-14 of a consumer unit)."
}
}
},
"maxItems": 100,
"minItems": 1
}
},
"additionalProperties": false
}Identify an identifier's kind: UUID version, ULID, KSUID, snowflake, Stripe/GitHub/AWS prefix, EVM address, email, E.164 — Classifies up to 100 identifier strings by format and, where it can be read, decodes the embedded timestamp, for an agent that must not pass an id of the wrong kind to a payment, ledger or API call. Recognises UUID (RFC 9562 version and variant, nil and max), ULID, KSUID, Discord and Twitter snowflakes, EIP-55 EVM addresses (checksum verified), email (WHATWG syntax and RFC 5321 length limits), E.1
| Argument | Type | Description |
|---|---|---|
| items* | array |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"value"
],
"properties": {
"value": {
"type": "string",
"maxLength": 256,
"minLength": 1
},
"expect": {
"enum": [
"uuid",
"ulid",
"ksuid",
"snowflake",
"evm-address",
"email",
"e164",
"stripe-object-id",
"github-token",
"aws-iam-unique-id"
],
"type": "string",
"description": "The kind the caller needs. Then the answer is pass if the value is a valid id of that kind, fail otherwise."
}
},
"additionalProperties": false
},
"maxItems": 100,
"minItems": 1
}
},
"additionalProperties": false
}Grid, Tower & Infrastructure Pipeline Near a Site — Screens a US site (latitude/longitude or Census-geocoded address) within a radius (default 10, max 50 miles) using primary public data: operating and planned generators and storage from EIA Form 860M, active interconnection-queue entries from MISO, CAISO, NYISO and ERCOT matched at county level, FCC Antenna Structure Registration towers, and HIFLD transmission lines and substations. Code computes
| Argument | Type | Description |
|---|---|---|
| focus | string | Which screening signals to emphasise. Default general. |
| address | string | US street address, geocoded with the Census Bureau geocoder. Used when latitude/longitude are absent. |
| latitude | number | WGS84 latitude of the site (United States and territories). Give latitude and longitude together, or address. |
| longitude | number | WGS84 longitude of the site. |
| radius_miles | number | Search radius in miles (default 10, clamped to at most 50). |
| window_years | integer | Window for capacity added within the radius (default 3 years). |
{
"type": "object",
"properties": {
"focus": {
"enum": [
"data_center",
"logistics",
"telecom",
"solar_storage",
"general"
],
"type": "string",
"description": "Which screening signals to emphasise. Default general."
},
"address": {
"type": "string",
"maxLength": 200,
"minLength": 5,
"description": "US street address, geocoded with the Census Bureau geocoder. Used when latitude/longitude are absent."
},
"latitude": {
"type": "number",
"maximum": 72,
"minimum": 17,
"description": "WGS84 latitude of the site (United States and territories). Give latitude and longitude together, or address."
},
"longitude": {
"type": "number",
"maximum": -64,
"minimum": -180,
"description": "WGS84 longitude of the site."
},
"radius_miles": {
"type": "number",
"maximum": 200,
"minimum": 0.5,
"description": "Search radius in miles (default 10, clamped to at most 50)."
},
"window_years": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Window for capacity added within the radius (default 3 years)."
}
},
"additionalProperties": false
}Invoice arithmetic audit: line extensions, discounts, supplied tax, totals, with the drift in minor units — Recomputes up to 500 invoice lines in exact decimal arithmetic and compares them with the stated amounts, for an agent about to approve, pay or reconcile an invoice. Checks: quantity x unit price less discount equals the line amount; tax is taken as supplied (tax amounts are summed, never looked up) and, where a rate is given, tax equals rate x line amount under the declared rounding scope (per li
| Argument | Type | Description |
|---|---|---|
| lines* | array | |
| stated | object | |
| currency | string | ISO 4217 alphabetic code, upper case. |
| exponent | integer | |
| rounding | string | Default half-up. half-up: ties away from zero. half-down: ties toward zero. half-even: ties to the even neighbour. up: away from zero. down: toward zero. ceiling: toward +infinity. floor: toward -infinity. |
| taxRounding | string | line (default): each line's tax is rounded on its own. invoice: tax is rounded once per distinct rate on the sum of the line amounts, and compared with the supplied tax sum for that rate. |
| toleranceMinor | integer | Largest absolute drift in minor units still treated as a match. Default 0. |
Autonomous Lead Enrichment — Scrapes a company homepage, deduces its value proposition and buyer persona, and drafts a targeted B2B cold email.
| Argument | Type | Description |
|---|---|---|
| url* | string | Company homepage URL; https:// is assumed if omitted. |
| senderContext | string | What you sell, used to tailor the pitch. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"minLength": 3,
"description": "Company homepage URL; https:// is assumed if omitted."
},
"senderContext": {
"type": "string",
"maxLength": 2000,
"description": "What you sell, used to tailor the pitch."
}
},
"additionalProperties": false
}Literary Agent Scout: quoted wish-list matches with query status and fee checks — For an author with a book to query, finds literary agents and agencies on the agencies' own websites, reads their guidelines and agent bios, and ranks them against your pitch. Every fit claim carries a sentence quoted verbatim from the agent's page (quotes not found on the page are dropped), each agent shows whether the page says queries are open or closed with the retrieval time, and any agency p
| Argument | Type | Description |
|---|---|---|
| pages | array | Agency submission, wish-list or agent-bio pages you already found. They are read and checked like the ones found by search. |
| discover | boolean | Search the web for more agencies (default true). Set false to check only the pages you supplied. |
| manuscript* | object | |
| max_results | integer | Default 5. |
{
"type": "object",
"required": [
"manuscript"
],
"properties": {
"pages": {
"type": "array",
"items": {
"type": "string",
"maxLength": 500
},
"maxItems": 8,
"description": "Agency submission, wish-list or agent-bio pages you already found. They are read and checked like the ones found by search."
},
"discover": {
"type": "boolean",
"description": "Search the web for more agencies (default true). Set false to check only the pages you supplied."
},
"manuscript": {
"type": "object",
"required": [
"category",
"pitch"
],
"properties": {
"comps": {
"type": "array",
"items": {
"type": "string",
"maxLength": 120
},
"maxItems": 5,
"description": "Recent comparable titles."
},
"genre": {
"type": "string",
"maxLength": 80,
"description": "For example \"domestic suspense\" or \"cozy fantasy\"."
},
"pitch": {
"type": "string",
"maxLength": 3000,
"minLength": 40,
"description": "Logline or short synopsis; no manuscript text is needed."
},
"category": {
"enum": [
"adult_fiction",
"adult_nonfiction",
"memoir",
"young_adult",
"middle_grade",
"picture_book",
"graphic_novel"
],
"type": "string",
"description": "Where the book sits on a bookshelf."
},
"word_count": {
"type": "integer",
"maximum": 1000000,
"minimum": 1
}
},
"additionalProperties": false
},
"max_results": {
"type": "integer",
"maximum": 8,
"minimum": 1,
"description": "Default 5."
}
},
"additionalProperties": false
}Parse locale-formatted money text (1.234,56, 1,00,000, accounting parentheses) without guessing — Parses up to 100 number or money strings such as "1.234,56", "1,00,000", "(1,234.50)", "¥1,000" or "CHF 1'234.50" into canonical decimal strings, for an agent reading amounts from documents, emails or tables. With a BCP 47 locale it applies that locale's CLDR separators (read from Intl.NumberFormat); without one it lists every valid reading and an ambiguous string such as "1,234" returns unknown w
| Argument | Type | Description |
|---|---|---|
| items* | array |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"locale": {
"type": "string",
"pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8}){0,3}$",
"maxLength": 35,
"description": "BCP 47 tag whose CLDR separators apply, e.g. de-DE, en-IN, de-CH."
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "Expected currency; resolves an ambiguous symbol and fails a contradicting one."
}
},
"additionalProperties": false
},
"maxItems": 100,
"minItems": 1
}
},
"additionalProperties": false
}Choose which inventory lots to pick (FIFO, FEFO, LIFO, fewest lots) — Allocates a demand quantity across up to 200 inventory lots under a stated policy (FIFO by received date, FEFO by expiry, LIFO, or fewest lots), excluding held, expired, short-shelf-life and wrong-location lots, in whole case multiples if asked. For warehouse and order agents. Returns the pick plan, the shortfall and a reason for every excluded lot. A caller asOf date is required (the check never
| Argument | Type | Description |
|---|---|---|
| asOf* | string | Reference date, YYYY-MM-DD. An expiry date is the last usable day: a lot expiring on asOf has 0 days left. |
| lots* | array | At most 200. |
| demand* | integer | Units wanted (whole units). |
| policy* | string | FIFO: oldest received first. FEFO: earliest expiry first. LIFO: newest received first. MIN_LOTS: fewest lots (largest usable first; ties by earlier expiry, then id). |
| pickMultiple | integer | Each lot contributes whole multiples of this case size (default 1). |
| allowOverpick | boolean | With pickMultiple, allow the last pick to round the total up to a whole case (default false: leave the remainder as shortfall). |
| allowedLocations | array |
Does this manual or procedure apply to this unit? — Checks whether a manual, service bulletin or procedure applies to a specific unit by comparing the scope the document declares (models, firmware or revision range, serial range, exclusions) with the unit's facts the caller supplies. Versions written as dotted digits (2.10.1) compare numerically per segment. For an agent about to follow a repair or configuration procedure. Applicable only when ever
| Argument | Type | Description |
|---|---|---|
| unit* | array | The unit's facts: key is the field name. |
| excludes | array | Scope the document excludes: each entry that matches makes it inapplicable. |
| applicability* | array | Scope the document declares: every entry must match. |
{
"type": "object",
"required": [
"applicability",
"unit"
],
"properties": {
"unit": {
"type": "array",
"items": {
"type": "object",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"maxLength": 100
},
"asOf": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"maxLength": 40,
"description": "When this was observed (ISO date or instant)."
},
"value": {
"description": "Observed JSON value. Omitted means the fact is present with no value; false or null means observed absent."
},
"source": {
"type": "string",
"maxLength": 200
}
},
"additionalProperties": false
},
"maxItems": 500,
"description": "The unit's facts: key is the field name."
},
"excludes": {
"type": "array",
"items": {
"type": "object",
"required": [
"field"
],
"properties": {
"max": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "Inclusive upper bound, same comparison rules as min."
},
"min": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "Inclusive lower bound. Numbers compare numerically; two dotted-digit strings (1.10.2) compare segment by segment."
},
"field": {
"type": "string",
"maxLength": 100,
"description": "Unit attribute, for example model, firmware, serial, revision."
},
"oneOf": {
"type": "array",
"items": {
"description": "Allowed JSON value."
},
"maxItems": 50,
"description": "The evidence value must equal one of these."
},
"equals": {
"description": "The evidence value must equal this JSON value (deep equality)."
}
},
"additionalProperties": false
},
"maxItems": 100,
"description": "Scope the document excludes: each entry that matches makes it inapplicable."
},
"applicability": {
"type": "array",
"items": {
"type": "object",
"required": [
"field"
],
"properties": {
"max": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "Inclusive upper bound, same comparison rules as min."
},
"min": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "Inclusive lower bound. Numbers compare numerically; two dotted-digit strings (1.10.2) compare segment by segment."
},
"field": {
"type": "string",
"maxLength": 100,
"description": "Unit attribute, for example model, firmware, serial, revision."
},
"oneOf": {
"type": "array",
"items": {
"description": "Allowed JSON value."
},
"maxItems": 50,
"description": "The evidence value must equal one of these."
},
"equals": {
"description": "The evidence value must equal this JSON value (deep equality)."
}
},
"additionalProperties": false
},
"maxItems": 100,
"minItems": 1,
"description": "Scope the document declares: every entry must match."
}
},
"additionalProperties": false
}Is the exchange in its core session at this instant? (NYSE holidays and 13:00 early closes, or a caller calendar) — For up to 50 caller-supplied instants, reports whether the NYSE core session (09:30-16:00 America/New_York, 13:00 on early-close days) is open, the reason when closed (weekend, named holiday, before open, after close), that day's open and close instants and the next open; or the same for a caller venue (zone, open, close, holidays, early closes). NYSE data is a dated snapshot of nyse.com covering
| Argument | Type | Description |
|---|---|---|
| open | string | venue caller only, local HH:MM. |
| close | string | venue caller only, local HH:MM, after open. |
| venue* | string | |
| expect | string | If given, status is fail for any instant whose state differs. |
| weekend | array | Non-business weekdays, 0=Sunday..6=Saturday. Default [0, 6]; use [5, 6] for a Friday/Saturday weekend. |
| holidays | array | Extra non-business dates YYYY-MM-DD (company closures, a calendar we do not carry). |
| instants* | array | RFC 3339 timestamps with Z or offset. |
| timeZone | string |
Medical Bill Upcoding & Overcharge Slasher — Paste an itemized hospital or physician bill and get a decision first: dispute it or not, the estimated dollars above a defensible price, and a dispute letter ready to send. Flags E/M upcoding, NCCI unbundling, duplicates and unit errors line by line, prices professional claims against the CMS physician fee schedule, checks the No Surprises Act self-pay dispute deadline, and lists the letter's pla
| Argument | Type | Description |
|---|---|---|
| billText | string | Alternative to lineItems: paste the itemized bill, one line item per line, e.g. "99285 EMERGENCY DEPT VISIT LVL 5 1 $3,250.00". Lines with a CPT/HCPCS code and a dollar amount are read in code; send exactly one of lineItems or billText. |
| coverage | string | Determines which No Surprises Act protections can apply. |
| claimType | string | Physician (CMS-1500) or hospital/facility (UB-04) bill. Medicare physician fee schedule benchmarks apply only to professional claims. |
| lineItems | array | |
| patientName | string | |
| facilityName | string | |
| facilityType* | string | |
| patientState |
METAR / SPECI decoder with flight category — Decodes up to 20 METAR or SPECI aviation weather reports (US and ICAO forms: wind with gusts and variable direction, visibility in statute miles or metres, CAVOK, RVR, present weather, cloud layers, temperature/dew point, altimeter, trend, RMK remarks) into structured fields and computes the FAA flight category (LIFR/IFR/MVFR/VFR). Every token it cannot decode is returned with its character offset
| Argument | Type | Description |
|---|---|---|
| claims | array | Optional claims to verify against the decoded report. |
| reports* | array | Reports to decode. |
{
"type": "object",
"required": [
"reports"
],
"properties": {
"claims": {
"type": "array",
"items": {
"type": "object",
"required": [
"report"
],
"properties": {
"report": {
"type": "integer",
"maximum": 19,
"minimum": 0,
"description": "Index into reports."
},
"dewpointC": {
"type": "number",
"description": "Claimed dew point, Celsius."
},
"windSpeed": {
"type": "number",
"description": "Claimed mean wind speed in the report's own unit."
},
"temperatureC": {
"type": "number",
"description": "Claimed air temperature, Celsius."
},
"flightCategory": {
"enum": [
"LIFR",
"IFR",
"MVFR",
"VFR"
],
"type": "string"
}
}
},
"maxItems": 100,
"description": "Optional claims to verify against the decoded report."
},
"reports": {
"type": "array",
"items": {
"type": "string",
"maxLength": 2000,
"description": "One METAR or SPECI report, optionally ending in '='."
},
"maxItems": 20,
"minItems": 1,
"description": "Reports to decode."
}
},
"additionalProperties": false
}Tiered usage pricing: graduated or volume tiers, included quantity, package units, minimum charge — Prices a usage quantity against up to 50 tiers, graduated (each tier prices only its own units) or volume (the tier holding the whole quantity prices all of it), for an agent checking a usage bill or quoting a plan. Order of operations: subtract the included quantity, convert to billing packages (per N units, rounded up, down or not at all), price the tiers, add flat fees, apply the minimum charge
| Argument | Type | Description |
|---|---|---|
| per | string | Units per billing package (default 1). Tiers are expressed in packages. |
| mode* | string | |
| tiers* | array | |
| minimum | string | Minimum charge in major units, applied after the tiers. |
| currency | string | ISO 4217 alphabetic code, upper case. |
| exponent | integer | |
| included | string | Free quantity subtracted before packaging and tiers (never below zero). |
| quantity* | string | Decimal string such as "-12.50" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats. |
ISO 4217 minor units: decimal amount to integer minor units and back — Converts up to 200 money amounts between decimal strings and integer minor units (cents, yen, fils) using the ISO 4217 exponent from the SIX Group list, for an agent about to send an amount to a payment API. Returns the exponent, the integer minor amount and the canonical decimal string; JPY is 0, KWD and BHD are 3, CLF is 4. An amount with more fraction digits than the currency allows fails with
| Argument | Type | Description |
|---|---|---|
| items* | array |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency"
],
"properties": {
"minor": {
"type": "integer",
"maximum": 999999999999999,
"minimum": -999999999999999,
"description": "Integer minor units to convert to a decimal string."
},
"amount": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal amount to convert to minor units. Give amount or minor, or neither to look up the exponent."
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "ISO 4217 alphabetic code, upper case."
},
"exponent": {
"type": "integer",
"maximum": 8,
"minimum": 0,
"description": "Override for currencies absent from ISO 4217 list one or without a minor unit. Wins over the list."
},
"rounding": {
"enum": [
"half-up",
"half-down",
"half-even",
"up",
"down",
"ceiling",
"floor"
],
"type": "string",
"description": "Only used when amount has more fraction digits than the exponent. half-up: ties away from zero. half-down: ties toward zero. half-even: ties to the even neighbour. up: away from zero. down: toward zero. ceiling: toward +infinity. floor: toward -infinity."
}
},
"additionalProperties": false
},
"maxItems": 200,
"minItems": 1
}
},
"additionalProperties": false
}Which timestamps are anchored? Flags naive local times, zone abbreviations, date-only, epoch units and d/m ambiguity — Classifies up to 200 timestamp strings as anchored (RFC 3339 with Z or offset), naive local (no offset), date-only, epoch seconds or milliseconds, zone abbreviation, ambiguous numeric date, or unparseable, and lists the hazard of each; with assumedTimeZone it also reports whether a naive time falls in a DST gap or overlap there, every instant it could mean, and offsets that contradict the zone. Bu
| Argument | Type | Description |
|---|---|---|
| timestamps* | array | |
| assumedTimeZone | string | IANA zone the producer is believed to use; used for gap/overlap and offset-consistency checks. |
{
"type": "object",
"required": [
"timestamps"
],
"properties": {
"timestamps": {
"type": "array",
"items": {
"type": "string",
"maxLength": 64
},
"maxItems": 200,
"minItems": 1
},
"assumedTimeZone": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_+-]*(/[A-Za-z0-9_+-]+){0,2}$",
"maxLength": 64,
"description": "IANA zone the producer is believed to use; used for gap/overlap and offset-consistency checks."
}
},
"additionalProperties": false
}Number and cheque-amount words: English (US, UK, Indian lakh/crore) — Spells out a number or a money amount in English words for a cheque, contract or invoice, for an agent that must write the amount in words next to the figures. Locales: en-US ("one hundred twenty-three"), en-GB ("one hundred and twenty-three"), en-IN (lakh and crore, "one crore twenty lakh"). With a currency it returns the integer words, the minor-unit fraction as digits over 10^exponent ("56/100"
| Argument | Type | Description |
|---|---|---|
| items* | array |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"amount",
"locale"
],
"properties": {
"amount": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
},
"locale": {
"type": "string",
"pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8}){0,3}$",
"maxLength": 35,
"description": "Supported: en-US, en-GB, en-IN."
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "ISO 4217 alphabetic code, upper case."
},
"exponent": {
"type": "integer",
"maximum": 8,
"minimum": 0,
"description": "Override the ISO 4217 exponent."
}
},
"additionalProperties": false
},
"maxItems": 100,
"minItems": 1
}
},
"additionalProperties": false
}Open Badges 2.0 / 3.0 credential verifier — Verifies an Open Badges credential end to end and says what could and could not be confirmed. Accepts an Open Badges 3.0 credential (JSON with an eddsa-jcs-2022 proof, or a VC-JWT signed with EdDSA, ES256 or RS256), an Open Badges 2.0 assertion (hosted, or signed as an RS256 JWS), a hosted-assertion URL, or a baked PNG or SVG image. Checks the 2.0/3.0 required fields, the issuance and expiry windo
| Argument | Type | Description |
|---|---|---|
| jws | string | A compact JWS: an Open Badges 3.0 VC-JWT or an Open Badges 2.0 signed assertion. |
| url | string | https URL of a hosted Open Badges 2.0 assertion or a hosted 3.0 credential. |
| image | string | A baked badge image, base64 (data URLs accepted): a PNG with an openbadges iTXt chunk, or an SVG with an openbadges:assertion or openbadges:credential element. Up to 6 MB decoded. |
| credential | any | The credential or assertion as a JSON object (or the same as a JSON string, or a compact JWS string). |
| recipientIdentity | string | Optional: the recipient's email or other identity to compare against the badge's recipient, including salted sha256$ and md5$ hashes. |
{
"type": "object",
"properties": {
"jws": {
"type": "string",
"maxLength": 1000000,
"description": "A compact JWS: an Open Badges 3.0 VC-JWT or an Open Badges 2.0 signed assertion."
},
"url": {
"type": "string",
"maxLength": 2000,
"description": "https URL of a hosted Open Badges 2.0 assertion or a hosted 3.0 credential."
},
"image": {
"type": "string",
"maxLength": 8500000,
"description": "A baked badge image, base64 (data URLs accepted): a PNG with an openbadges iTXt chunk, or an SVG with an openbadges:assertion or openbadges:credential element. Up to 6 MB decoded."
},
"credential": {
"description": "The credential or assertion as a JSON object (or the same as a JSON string, or a compact JWS string)."
},
"recipientIdentity": {
"type": "string",
"maxLength": 320,
"minLength": 1,
"description": "Optional: the recipient's email or other identity to compare against the badge's recipient, including salted sha256$ and md5$ hashes."
}
},
"additionalProperties": false
}Pack sizes, MOQ, order increments, overbuy cap and price breakpoints: what to actually order — Finds the cheapest valid order quantity for a requested number of units across up to 50 supplier options, for an agent buying parts or consumables sold in packs. Each option has a pack size (units per pack or notation such as "6x100", "case of 12", "12/case", "case of 6 inners"), an optional minimum order quantity, an order increment and price breakpoints; the order is rounded up to a multiple of
| Argument | Type | Description |
|---|---|---|
| options* | array | |
| requested* | integer | Units needed. |
| overbuyCapPercent | string | Reject orders exceeding the request by more than this percent. |
{
"type": "object",
"required": [
"requested",
"options"
],
"properties": {
"options": {
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"moq": {
"type": "integer",
"maximum": 1000000000,
"minimum": 1,
"description": "Minimum order quantity in units."
},
"increment": {
"type": "integer",
"maximum": 1000000000,
"minimum": 1,
"description": "Orders must be a multiple of this many units (default: the pack size)."
},
"unitPrice": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Base price per unit."
},
"innerUnits": {
"type": "integer",
"maximum": 1000000,
"minimum": 1,
"description": "Units per inner pack, for notations that count inner packs."
},
"breakpoints": {
"type": "array",
"items": {
"type": "object",
"required": [
"minQty",
"unitPrice"
],
"properties": {
"minQty": {
"type": "integer",
"maximum": 1000000000,
"minimum": 1
},
"unitPrice": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "Price per unit from minQty units upward (the highest breakpoint reached applies)."
},
"packNotation": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "e.g. \"6x100\", \"case of 12\", \"12/case\", \"case of 6 inners\"."
},
"unitsPerPack": {
"type": "integer",
"maximum": 1000000000,
"minimum": 1,
"description": "Settles an ambiguous packNotation; a value that matches no reading of the notation fails."
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"requested": {
"type": "integer",
"maximum": 1000000000,
"minimum": 1,
"description": "Units needed."
},
"overbuyCapPercent": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Reject orders exceeding the request by more than this percent."
}
},
"additionalProperties": false
}Does this text fit: SMS segments, X posts, store listings, ad and push limits — Checks up to 50 texts per call against a platform limit, for an agent writing a message, post, store listing, ad or push payload that must not be truncated or split. sms: GSM 7 bit vs UCS-2 and the exact segment boundaries per 3GPP TS 23.038 (extension characters cost 2 septets and never straddle a segment; an emoji is 2 UTF-16 units). x: weighted length per the open-source twitter-text config v3
| Argument | Type | Description |
|---|---|---|
| items* | array |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"platform",
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 20000,
"description": "Up to 60000 characters in total. For apns/fcm pass the serialized JSON payload."
},
"field": {
"type": "string",
"maxLength": 40,
"description": "app-store: name, subtitle, keywords, promotional-text, description. google-play: app-name, short-description, full-description. google-ads: rsa-headline, rsa-description, rsa-path. apns: payload, voip-payload. fcm: payload. Not used by sms and x."
},
"platform": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "sms, x, app-store, google-play, google-ads, apns, fcm."
},
"maxSegments": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "sms only: the number of segments you accept (default 1)."
}
}
},
"maxItems": 50,
"minItems": 1
}
},
"additionalProperties": false
}Proof-of-delivery sufficiency against a required evidence list — Checks whether the proof-of-delivery evidence supplied (signature, photo, timestamp, GPS fix, recipient name, scan ...) satisfies the carrier or contract requirement list the caller gives: every required item, plus optional 'at least k of these' groups, with value bounds (for example GPS accuracy at most 30 m) and maximum age. For an agent assembling a delivery dispute or a payment release. Return
| Argument | Type | Description |
|---|---|---|
| asOf | string | Reference instant (ISO date or instant) for evidence age; required only when a need sets maxAgeDays. The check never reads the clock. |
| anyOf | array | Alternative groups: at least atLeast (default 1) of the keys must be present. |
| evidence* | array | Proof elements the caller holds. |
| required* | array | Evidence every proof must contain (key plus optional bounds). |
{
"type": "object",
"required": [
"required",
"evidence"
],
"properties": {
"asOf": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"maxLength": 40,
"description": "Reference instant (ISO date or instant) for evidence age; required only when a need sets maxAgeDays. The check never reads the clock."
},
"anyOf": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"keys"
],
"properties": {
"id": {
"type": "string",
"maxLength": 100,
"description": "Group id."
},
"keys": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"description": "Evidence key."
},
"maxItems": 20,
"minItems": 1
},
"atLeast": {
"type": "integer",
"maximum": 20,
"minimum": 1
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "Alternative groups: at least atLeast (default 1) of the keys must be present."
},
"evidence": {
"type": "array",
"items": {
"type": "object",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"maxLength": 100
},
"asOf": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"maxLength": 40,
"description": "When this was observed (ISO date or instant)."
},
"value": {
"description": "Observed JSON value. Omitted means the fact is present with no value; false or null means observed absent."
},
"source": {
"type": "string",
"maxLength": 200
}
},
"additionalProperties": false
},
"maxItems": 500,
"description": "Proof elements the caller holds."
},
"required": {
"type": "array",
"items": {
"type": "object",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"maxLength": 100,
"description": "Evidence key this need reads."
},
"max": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "Inclusive upper bound, same comparison rules as min."
},
"min": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "Inclusive lower bound. Numbers compare numerically; two dotted-digit strings (1.10.2) compare segment by segment."
},
"oneOf": {
"type": "array",
"items": {
"description": "Allowed JSON value."
},
"maxItems": 50,
"description": "The evidence value must equal one of these."
},
"equals": {
"description": "The evidence value must equal this JSON value (deep equality)."
},
"maxAgeDays": {
"type": "number",
"maximum": 36500,
"minimum": 0,
"description": "Evidence must be dated (asOf on the evidence item) and at most this many days before the request asOf."
}
},
"additionalProperties": false
},
"maxItems": 100,
"minItems": 1,
"description": "Evidence every proof must contain (key plus optional bounds)."
}
},
"additionalProperties": false
}Attribute a total's change to quantity, price, FX, added and removed lines (sums exactly) — Explains why a total moved between two versions of a quote, order or invoice (up to 300 lines each), for an agent that must say how much of the change came from quantity, unit price, exchange rate, new lines and dropped lines. Lines are matched by key. Matched lines are decomposed by sequential substitution in the declared factor order (default quantity, then price, then fx), so the effects sum to
| Argument | Type | Description |
|---|---|---|
| fx | object | Multiplier from line currency to reporting currency, before and after. Default 1 and 1. |
| after* | array | |
| order | array | Substitution order of the factors; each at most once. Default [quantity, price, fx]. |
| before* | array | |
| currency | string | ISO 4217 alphabetic code, upper case. |
| exponent | integer | |
| rounding | string | Default half-even. half-up: ties away from zero. half-down: ties toward zero. half-even: ties to the even neighbour. up: away from zero. down: toward zero. ceiling: toward +infinity. floor: toward -infinity. |
| statedAfterTotal |
Print resolution, bleed and uncompressed bitmap size arithmetic — Given an image's pixel size and a print size (inches, millimetres or centimetres) plus optional bleed, margin and target ppi, returns the effective ppi over trim plus bleed, whether it meets the target, the pixel count a target ppi needs, the largest print size a target ppi allows, the safe area, and the exact uncompressed bitmap size. Built for print-on-demand, layout and image-prep agents; the t
| Argument | Type | Description |
|---|---|---|
| unit | string | Unit for print size, bleed and margin (default in). |
| bleed | number | Bleed added on each side of the trim, in unit (default 0). |
| margin | number | Safe margin inside the trim on each side, in unit (default 0). |
| widthPx* | integer | Image width in pixels. |
| channels | integer | Channels per pixel for the raw size (default 3). |
| heightPx* | integer | Image height in pixels. |
| targetPpi | number | The resolution you require, in pixels per inch. |
| printWidth | number | Trim width in unit. |
Pronunciation lexicon to SSML phoneme and sub tags — Applies your pronunciation lexicon (up to 200 terms, each an IPA string or a spoken alias) to a text of up to 20000 characters and returns SSML 1.1 with <phoneme alphabet="ipa"> or <sub alias> around each whole-word match, XML-escaped, for an agent preparing text for a text-to-speech engine. Matching is whole-word, longest term first, left to right, deterministic. It does not guess pronunciations,
| Argument | Type | Description |
|---|---|---|
| lang | string | xml:lang of the speak element (default en-US). |
| text* | string | |
| lexicon* | array | |
| wrapSpeak | boolean | Wrap in <speak version="1.1"> (default true). |
{
"type": "object",
"required": [
"text",
"lexicon"
],
"properties": {
"lang": {
"type": "string",
"maxLength": 16,
"description": "xml:lang of the speak element (default en-US)."
},
"text": {
"type": "string",
"maxLength": 20000,
"minLength": 1
},
"lexicon": {
"type": "array",
"items": {
"type": "object",
"required": [
"term"
],
"properties": {
"ipa": {
"type": "string",
"maxLength": 200,
"description": "IPA transcription; becomes <phoneme alphabet=\"ipa\" ph=...>."
},
"term": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"alias": {
"type": "string",
"maxLength": 200,
"description": "Spoken form; becomes <sub alias=...>."
},
"caseSensitive": {
"type": "boolean",
"description": "Default false."
}
}
},
"maxItems": 200,
"minItems": 1
},
"wrapSpeak": {
"type": "boolean",
"description": "Wrap in <speak version=\"1.1\"> (default true)."
}
},
"additionalProperties": false
}Property Hazard & Site Risk Report — Before an agent recommends, underwrites or screens a US property, reads free public federal hazard data for a street address or lat/lon: Census geocode, FEMA National Flood Hazard Layer flood zone, SFHA status and base flood elevation, USGS ASCE 7-22 seismic design values, FEMA National Risk Index tract ratings (wildfire, hurricane, tornado and more), OpenFEMA county disaster declarations for 10 y
| Argument | Type | Description |
|---|---|---|
| lat | number | Latitude in WGS84 degrees; give with lon instead of address. |
| lon | number | Longitude in WGS84 degrees; give with lat. |
| address | string | US street address with city and state or ZIP, e.g. 1111 Lincoln Rd, Miami Beach, FL 33139. Give this or lat with lon. |
| intended_use | string | Optional. Reweights the score: residential counts environmental proximity 1.5x, industrial 0.5x, development counts flood and seismic 1.5x. |
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in WGS84 degrees; give with lon instead of address."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in WGS84 degrees; give with lat."
},
"address": {
"type": "string",
"maxLength": 200,
"minLength": 5,
"description": "US street address with city and state or ZIP, e.g. 1111 Lincoln Rd, Miami Beach, FL 33139. Give this or lat with lon."
},
"intended_use": {
"enum": [
"residential",
"commercial",
"industrial",
"development"
],
"type": "string",
"description": "Optional. Reweights the score: residential counts environmental proximity 1.5x, industrial 0.5x, development counts flood and seismic 1.5x."
}
},
"additionalProperties": false
}Property Code-Violation & Lien History (Open-Data Cities) — Before buying, leasing or insuring a US property, reads the city's own open-data code-enforcement records for one address (or a NYC BBL/BIN) and returns normalized violations with date opened, category, description, open/closed status, source severity class and record URL; deterministic counts by status, category and year; days since the latest violation; the longest repeat-citation streak (citati
| Argument | Type | Description |
|---|---|---|
| bbl | string | NYC borough-block-lot, 10 digits. |
| bin | string | NYC building identification number, 7 digits. |
| zip | string | ZIP code (informational; not used to widen a match). |
| city | string | City, when not inside address. For NYC a borough name (Brooklyn, Queens, ...) narrows the match. |
| state | string | Two-letter state, when not inside address. |
| address | string | US street address with city and state, e.g. '447 21st Ave, San Francisco, CA 94121'. Give exactly one of address, bbl or bin. |
| lookback_years | integer | Years of history to read (default 10). |
{
"type": "object",
"properties": {
"bbl": {
"type": "string",
"pattern": "^[1-5][0-9]{9}$",
"description": "NYC borough-block-lot, 10 digits."
},
"bin": {
"type": "string",
"pattern": "^[1-5][0-9]{6}$",
"description": "NYC building identification number, 7 digits."
},
"zip": {
"type": "string",
"maxLength": 10,
"description": "ZIP code (informational; not used to widen a match)."
},
"city": {
"type": "string",
"maxLength": 60,
"description": "City, when not inside address. For NYC a borough name (Brooklyn, Queens, ...) narrows the match."
},
"state": {
"type": "string",
"maxLength": 2,
"description": "Two-letter state, when not inside address."
},
"address": {
"type": "string",
"maxLength": 200,
"minLength": 5,
"description": "US street address with city and state, e.g. '447 21st Ave, San Francisco, CA 94121'. Give exactly one of address, bbl or bin."
},
"lookback_years": {
"type": "integer",
"maximum": 30,
"minimum": 1,
"description": "Years of history to read (default 10)."
}
},
"additionalProperties": false
}Proration and day-count fractions (30/360, ACT/365F, ACT/360, ACT/ACT ISDA) on half-open date ranges — Computes the year fraction of up to 100 half-open date ranges [start, end) under a named ISDA day-count convention, and optionally the prorated charge, for an agent billing a partial period or accruing interest. Conventions follow Section 4.16 of the 2006 ISDA Definitions: 30/360, 30E/360, 30E/360 (ISDA), Actual/365 (Fixed), Actual/360, Actual/Actual (ISDA), 1/1. `end` is the day immediately follo
| Argument | Type | Description |
|---|---|---|
| items* | array |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"start",
"end",
"convention"
],
"properties": {
"end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Exclusive end: the day after the last day included. Must not precede start."
},
"start": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Calendar date YYYY-MM-DD."
},
"amount": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Optional amount to prorate (annual amount without `period`; period amount with it)."
},
"period": {
"type": "object",
"required": [
"start",
"end"
],
"properties": {
"end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Calendar date YYYY-MM-DD."
},
"start": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Calendar date YYYY-MM-DD."
}
},
"description": "Full billing period [start, end); the charge is amount x fraction(range) / fraction(period).",
"additionalProperties": false
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "ISO 4217 alphabetic code, upper case."
},
"exponent": {
"type": "integer",
"maximum": 8,
"minimum": 0
},
"rounding": {
"enum": [
"half-up",
"half-down",
"half-even",
"up",
"down",
"ceiling",
"floor"
],
"type": "string",
"description": "Rounding of the charge to the currency's minor unit. Default half-up. half-up: ties away from zero. half-down: ties toward zero. half-even: ties to the even neighbour. up: away from zero. down: toward zero. ceiling: toward +infinity. floor: toward -infinity."
},
"convention": {
"enum": [
"1/1",
"30/360",
"30E/360",
"30E/360-ISDA",
"ACT/365F",
"ACT/360",
"ACT/ACT-ISDA",
"ACT/ACT-ICMA"
],
"type": "string"
},
"terminationDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Termination date of the transaction; only used by 30E/360-ISDA."
}
},
"additionalProperties": false
},
"maxItems": 100,
"minItems": 1
}
},
"additionalProperties": false
}Requested vs quoted specification attributes: met, not met or not comparable — Compares up to 200 requested attribute requirements with the values a supplier quoted (voltage, grade, finish, tolerance, brand, certification), for an agent checking that a quote matches the request before buying. Requirements are eq, ne, gte, lte, gt, lt, between (value..max), in (a list) or present; numeric comparisons use exact decimals, an optional tolerance, and the caller's unit conversions
| Argument | Type | Description |
|---|---|---|
| items* | array | |
| conversions | array | Caller-supplied unit conversions; none are built in. |
| caseSensitive | boolean |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"attribute",
"requested"
],
"properties": {
"quoted": {
"type": "object",
"properties": {
"unit": {
"type": "string",
"maxLength": 24,
"minLength": 1
},
"value": {
"type": "string",
"maxLength": 200
}
},
"description": "Omit or leave value out when the quote does not state the attribute.",
"additionalProperties": false
},
"attribute": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"requested": {
"type": "object",
"required": [
"op"
],
"properties": {
"op": {
"enum": [
"eq",
"ne",
"gte",
"lte",
"gt",
"lt",
"between",
"in",
"present"
],
"type": "string"
},
"max": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Upper bound for between."
},
"unit": {
"type": "string",
"maxLength": 24,
"minLength": 1,
"description": "Unit of the requested number."
},
"value": {
"type": "string",
"maxLength": 200,
"description": "Required value (numeric ops need a decimal string)."
},
"values": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"description": "Allowed values for in."
},
"tolerance": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Absolute slack in the requested unit applied to numeric eq/gte/lte/gt/lt/between (e.g. a +/- 0.5 mm)."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"maxItems": 200,
"minItems": 1
},
"conversions": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"to",
"factor"
],
"properties": {
"to": {
"type": "string",
"maxLength": 24,
"minLength": 1
},
"from": {
"type": "string",
"maxLength": 24,
"minLength": 1
},
"factor": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "value in `to` = value in `from` x factor."
}
},
"additionalProperties": false
},
"maxItems": 50,
"description": "Caller-supplied unit conversions; none are built in."
},
"caseSensitive": {
"type": "boolean"
}
},
"additionalProperties": false
}Normalise supplier quotes to one comparable unit price (currency, unit of measure, tax, discount) — Converts up to 200 quoted prices to a net price per base unit in one currency, for an agent comparing supplier quotes. Each line: price for `per` units of a unit of measure, optional tax-inclusive flag and rate, optional percentage discount, any currency. Uses only the caller's exchange rates and unit factors (1 uom = factor base units); a currency without a rate, a unit without a factor, or a tax
| Argument | Type | Description |
|---|---|---|
| lines* | array | |
| baseUom | string | Name of the base unit prices are normalised to (default "unit"). |
| fxRates | array | |
| uomFactors | array | |
| targetCurrency* | string | ISO 4217 alphabetic code, upper case. |
{
"type": "object",
"required": [
"targetCurrency",
"lines"
],
"properties": {
"lines": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"currency",
"price"
],
"properties": {
"id": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"per": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Quantity the price covers (default 1), e.g. \"1000\" for a per-thousand price."
},
"uom": {
"type": "string",
"maxLength": 16,
"minLength": 1,
"description": "Unit of measure of `per`; the base unit when omitted."
},
"price": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Quoted price in major units of `currency`, for `per` units of `uom`."
},
"taxRate": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Percent, e.g. \"20\"."
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "ISO 4217 alphabetic code, upper case."
},
"taxIncluded": {
"type": "boolean",
"description": "True if the price already includes tax; then taxRate is required."
},
"discountPercent": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Percent discount off the net price."
}
},
"additionalProperties": false
},
"maxItems": 200,
"minItems": 1
},
"baseUom": {
"type": "string",
"maxLength": 16,
"minLength": 1,
"description": "Name of the base unit prices are normalised to (default \"unit\")."
},
"fxRates": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"rate"
],
"properties": {
"from": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "ISO 4217 alphabetic code, upper case."
},
"rate": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Target-currency units per one unit of `from`."
}
},
"additionalProperties": false
},
"maxItems": 50
},
"uomFactors": {
"type": "array",
"items": {
"type": "object",
"required": [
"uom",
"factor"
],
"properties": {
"uom": {
"type": "string",
"maxLength": 16,
"minLength": 1
},
"factor": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Base units in one `uom`."
}
},
"additionalProperties": false
},
"maxItems": 50
},
"targetCurrency": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "ISO 4217 alphabetic code, upper case."
}
},
"additionalProperties": false
}Recipe scaling with caller-declared non-linear rules — Scales up to 60 ingredient quantities by a servings ratio or a factor for an agent resizing a recipe or batch formula, applying per-ingredient rules the caller declares: linear (the labelled default), power exponent, fixed amounts, min/max clamps and rounding steps, with an optional display unit via unit-convert. Reports what rounding did (relative drift, rounds-to-zero). It does NOT know which in
| Argument | Type | Description |
|---|---|---|
| factor | number | Scale factor, instead of fromServings/toServings. |
| density | object | Default density for displayUnit conversions that cross mass and volume. |
| toServings | number | Servings wanted. |
| ingredients* | array | Ingredients with quantity, unit and optional scaling rule. |
| fromServings | number | Servings the recipe is written for. |
| maxRelativeDrift | number | Fail an ingredient when rounding moves it by more than this fraction (0.1 = 10%). |
{
"type": "object",
"required": [
"ingredients"
],
"properties": {
"factor": {
"type": "number",
"maximum": 1000,
"minimum": 0.001,
"description": "Scale factor, instead of fromServings/toServings."
},
"density": {
"type": "object",
"required": [
"value",
"unit"
],
"properties": {
"unit": {
"type": "string",
"maxLength": 40,
"description": "Mass per volume unit expression, e.g. g/mL, kg/m3, lb/ft3, oz/cup_us."
},
"value": {
"type": "number",
"maximum": 1000000000,
"minimum": 1e-9,
"description": "Caller-supplied mass per volume. Never looked up: no ingredient density table is shipped."
}
},
"description": "Default density for displayUnit conversions that cross mass and volume.",
"additionalProperties": false
},
"toServings": {
"type": "number",
"maximum": 1000000,
"minimum": 0.000001,
"description": "Servings wanted."
},
"ingredients": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"quantity",
"unit"
],
"properties": {
"max": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Upper clamp applied after the rule."
},
"min": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Lower clamp applied after the rule."
},
"name": {
"type": "string",
"maxLength": 80,
"description": "Ingredient name, echoed back."
},
"rule": {
"enum": [
"linear",
"power",
"fixed"
],
"type": "string",
"description": "How the quantity scales. Default linear (quantity x factor): the labelled default, not a culinary claim. power: quantity x factor^exponent. fixed: stays at fixedQuantity (or the written quantity)."
},
"unit": {
"type": "string",
"maxLength": 40,
"description": "Unit of the quantity: a unit-convert expression (g, cup_us, tbsp_metric) or any counted unit (egg, clove) that is only scaled, never converted."
},
"claimed": {
"type": "number",
"maximum": 1000000000000,
"minimum": 0,
"description": "Optional claimed scaled quantity (after rounding); a mismatch fails."
},
"density": {
"type": "object",
"required": [
"value",
"unit"
],
"properties": {
"unit": {
"type": "string",
"maxLength": 40,
"description": "Mass per volume unit expression, e.g. g/mL, kg/m3, lb/ft3, oz/cup_us."
},
"value": {
"type": "number",
"maximum": 1000000000,
"minimum": 1e-9,
"description": "Caller-supplied mass per volume. Never looked up: no ingredient density table is shipped."
}
},
"description": "Per-ingredient density for displayUnit, overriding the top-level one.",
"additionalProperties": false
},
"roundTo": {
"type": "number",
"maximum": 1000000,
"minimum": 0.000001,
"description": "Round to a multiple of this step (0.25 cup, 1 egg)."
},
"exponent": {
"type": "number",
"maximum": 2,
"minimum": 0,
"description": "Exponent for rule power, caller-supplied (no culinary constants are built in)."
},
"quantity": {
"type": "number",
"maximum": 1000000000,
"minimum": 1e-9,
"description": "Quantity in the recipe as written."
},
"roundMode": {
"enum": [
"nearest",
"up",
"down"
],
"type": "string",
"description": "Default nearest, ties up."
},
"displayUnit": {
"type": "string",
"maxLength": 40,
"description": "Also report the scaled quantity in this unit (needs a density to cross mass and volume)."
},
"relTolerance": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Relative tolerance for claimed. Default 1e-9."
},
"fixedQuantity": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Quantity for rule fixed. Defaults to the written quantity."
}
},
"additionalProperties": false
},
"maxItems": 60,
"minItems": 1,
"description": "Ingredients with quantity, unit and optional scaling rule."
},
"fromServings": {
"type": "number",
"maximum": 1000000,
"minimum": 0.000001,
"description": "Servings the recipe is written for."
},
"maxRelativeDrift": {
"type": "number",
"maximum": 10,
"minimum": 0,
"description": "Fail an ingredient when rounding moves it by more than this fraction (0.1 = 10%)."
}
},
"additionalProperties": false
}Exact Ledger Reconciler — Explains which charges, refunds and fees make up a Stripe, PayPal or bank payout, with an exact solver instead of a model: subset-sum over integer minor units (meet-in-the-middle, DP, branch-and-bound) across candidate fee schedules (percentage + fixed, tiers, caps), withholding, FX rates and rounding conventions (half-up, half-even, truncate; per line or on the total). Paste a Stripe balance or p
| Argument | Type | Description |
|---|---|---|
| text | object | Messy source text for collections not given structurally. A CSV with a header (Stripe balance or payout-reconciliation export, PayPal activity export, bank statement) is parsed by code with no model, and so are headerless lines with one amount each (date, id, amount, currency, and wording that names one kind, such as Payment or Refund); anything else goes to a fast-tier LLM that must quote every row verbatim. |
| items | array | Ledger lines. Amounts are signed (refunds and disputes negative) strings in major units, e.g. "1234.56". |
| limits | object | |
| fxRates | array | Direct rates only (1 from = rate to). The latest rate dated on or before the reference date applies; an undated rate is the fallback. |
| crossCheck | boolean | Run two independent LLM translations and keep only rows both produced (default true). |
| maxLagDays | integer | An item may settle at most this many days after its date. |
Expand an RRULE or 5-field cron into concrete occurrences with DST handling, exclusions and conflict detection — Expands an RFC 5545 RRULE (FREQ DAILY/WEEKLY/MONTHLY/YEARLY, INTERVAL, COUNT, UNTIL, BYDAY with ordinals, BYMONTHDAY, BYMONTH, BYSETPOS, WKST; DTSTART with TZID; EXDATE) or a crontab(5) expression into up to 366 occurrences in a time zone, with the UTC instant of each, DST gap or overlap flags, caller blackout dates, a plain-English reading, and optionally the occurrences where it collides with a
| Argument | Type | Description |
|---|---|---|
| to | string | Local end of the window, inclusive. |
| from | string | Local start of the output window; required for cron, default DTSTART for rrule. |
| kind* | string | |
| rule* | string | rrule: 'DTSTART;TZID=America/New_York:19970902T090000\nRRULE:FREQ=DAILY;COUNT=10\nEXDATE;TZID=America/New_York:19970903T090000' or just 'FREQ=...' with dtstart. cron: '*/15 9-17 * * 1-5' (dom and dow both restricted match if either does). |
| limit | integer | Maximum occurrences returned (default 20). |
| other | object | A second rule to compare; conflicts are occurrences whose intervals overlap (equal instants when both durations are 0). |
| dtstart | string | Local DTSTART when the rule text has none. |
Selective PII redaction with a self-check — Redacts detected personal data at the level you choose and rescans the output with the same rules. This self-check does not prove that all personal data is gone. Pick a level: 1 government identifiers (SSN, ITIN, EIN, UK NINO, Canadian SIN, driver's license, passport), 2 adds dates of birth, 3 adds street addresses and phone numbers, 4 adds person names and email addresses. Then switch single cate
| Argument | Type | Description |
|---|---|---|
| keep | array | Strings that must never be redacted, such as your own email address or company name. Case-insensitive, whole match. |
| text* | string | The document text to redact (plain text, Markdown, CSV, JSON or HTML source). |
| level | integer | Cumulative preset, default 1. 1: government identifiers (SSN, ITIN, EIN, UK NINO, Canadian SIN, driver's license, passport); 2: level 1 plus dates of birth; 3: level 2 plus street addresses and phone numbers; 4: level 3 plus person names and email addresses. |
| style | string | label (default): [REDACTED:SSN]. generic: [REDACTED]. numbered: [PERSON_1], same value same number. last4: [REDACTED:SSN:*6789] for numeric identifiers; this discloses the last four characters. |
| terms | array | Words or phrases to redact wherever they appear (business names, project names, people you already know). Case-insensitive. |
| exclude | array | Categories to remove from the level preset. |
Regional Economy & Trade Brief — Given a US state, county or metro (name, FIPS or CBSA), an industry (NAICS code or description) and a role (retailer, logistics, cfo, lender, other), reads BLS LAUS and QCEW, FRED (state employment, house prices, goods exports and imports, regional CPI), Census Building Permits and USAspending live, then computes levels, year-over-year and three-year changes, location quotient, z-scores against th
| Argument | Type | Description |
|---|---|---|
| role* | string | Who the brief is for. |
| region* | string | A US state, county or metropolitan area by name ("Ohio", "Travis County, TX", "Phoenix metro"), state FIPS (39), county FIPS (48453) or metro CBSA code (38060). |
| industry* | string | NAICS code (44-45, 722, 4841) or a plain description ("restaurants", "trucking"). |
| regionType | string | Disambiguates a name that is both a county and a metro or state. |
| lookbackYears | integer | Years of history used for z-scores (default 5). |
{
"type": "object",
"required": [
"region",
"industry",
"role"
],
"properties": {
"role": {
"enum": [
"retailer",
"logistics",
"cfo",
"lender",
"other"
],
"type": "string",
"description": "Who the brief is for."
},
"region": {
"type": "string",
"maxLength": 120,
"minLength": 2,
"description": "A US state, county or metropolitan area by name (\"Ohio\", \"Travis County, TX\", \"Phoenix metro\"), state FIPS (39), county FIPS (48453) or metro CBSA code (38060)."
},
"industry": {
"type": "string",
"maxLength": 200,
"minLength": 2,
"description": "NAICS code (44-45, 722, 4841) or a plain description (\"restaurants\", \"trucking\")."
},
"regionType": {
"enum": [
"state",
"county",
"metro"
],
"type": "string",
"description": "Disambiguates a name that is both a county and a metro or state."
},
"lookbackYears": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Years of history used for z-scores (default 5)."
}
},
"additionalProperties": false
}Checklist coverage: caller requirements against caller evidence — Evaluates a checklist of requirements the caller defines (each made of needs on evidence keys: present, equals, one of, min/max, maximum age) against evidence the caller supplies, and returns met / unmet / unknown per requirement with the exact need and value that decided it. For an agent that must prove a task's acceptance criteria were covered before it reports done. Does not judge whether the p
| Argument | Type | Description |
|---|---|---|
| asOf | string | Reference instant (ISO date or instant) for evidence age; required only when a need sets maxAgeDays. The check never reads the clock. |
| evidence* | array | Observed facts. Several items may share a key (conflicts surface as unknown). |
| requirements* | array | The checklist. |
{
"type": "object",
"required": [
"requirements",
"evidence"
],
"properties": {
"asOf": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"maxLength": 40,
"description": "Reference instant (ISO date or instant) for evidence age; required only when a need sets maxAgeDays. The check never reads the clock."
},
"evidence": {
"type": "array",
"items": {
"type": "object",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"maxLength": 100
},
"asOf": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"maxLength": 40,
"description": "When this was observed (ISO date or instant)."
},
"value": {
"description": "Observed JSON value. Omitted means the fact is present with no value; false or null means observed absent."
},
"source": {
"type": "string",
"maxLength": 200
}
},
"additionalProperties": false
},
"maxItems": 500,
"description": "Observed facts. Several items may share a key (conflicts surface as unknown)."
},
"requirements": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"needs"
],
"properties": {
"id": {
"type": "string",
"maxLength": 100
},
"mode": {
"enum": [
"all",
"any",
"atLeast"
],
"type": "string",
"description": "How the needs combine. Default all; with forbid:true the default is any (the requirement is unmet as soon as one listed need applies), and all means only the conjunction is prohibited."
},
"text": {
"type": "string",
"maxLength": 500,
"description": "Free text echoed in witnesses."
},
"needs": {
"type": "array",
"items": {
"type": "object",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"maxLength": 100,
"description": "Evidence key this need reads."
},
"max": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "Inclusive upper bound, same comparison rules as min."
},
"min": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "Inclusive lower bound. Numbers compare numerically; two dotted-digit strings (1.10.2) compare segment by segment."
},
"oneOf": {
"type": "array",
"items": {
"description": "Allowed JSON value."
},
"maxItems": 50,
"description": "The evidence value must equal one of these."
},
"equals": {
"description": "The evidence value must equal this JSON value (deep equality)."
},
"maxAgeDays": {
"type": "number",
"maximum": 36500,
"minimum": 0,
"description": "Evidence must be dated (asOf on the evidence item) and at most this many days before the request asOf."
}
},
"additionalProperties": false
},
"maxItems": 20,
"minItems": 1
},
"forbid": {
"type": "boolean",
"description": "The needs describe a prohibited condition; the requirement holds only when they are all shown not to apply."
},
"atLeast": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "With mode atLeast: how many needs must hold."
},
"optional": {
"type": "boolean",
"description": "Reported, never changes the status."
}
},
"additionalProperties": false
},
"maxItems": 100,
"minItems": 1,
"description": "The checklist."
}
},
"additionalProperties": false
}Score state for tennis, golf handicap differentials and cricket overs — Replays a tennis point sequence (ITF Rules of Tennis: games, deuce, tie-breaks, match tie-break, who serves), computes a golf Score Differential and Handicap Index (World Handicap System), or tallies a cricket innings ball by ball (overs.balls, wides and no-balls, maidens, wickets), for agents that must verify a reported score. Optionally checks a claimed score against the replay and names the fir
| Argument | Type | Description |
|---|---|---|
| golf | object | For sport=golf: a round, a list of differentials, or both. |
| sport* | string | Selects which block below is read. |
| tennis | object | For sport=tennis. |
| cricket | object | For sport=cricket: one innings, ball by ball. |
{
"type": "object",
"required": [
"sport"
],
"properties": {
"golf": {
"type": "object",
"properties": {
"claim": {
"type": "object",
"properties": {
"handicapIndex": {
"type": "number",
"description": "Claimed Handicap Index."
},
"scoreDifferential": {
"type": "number",
"description": "Claimed Score Differential."
}
},
"additionalProperties": false
},
"round": {
"type": "object",
"required": [
"courseRating",
"slopeRating"
],
"properties": {
"pcc": {
"type": "number",
"maximum": 3,
"minimum": -1,
"description": "Playing Conditions Calculation adjustment, -1.0 to +3.0 (Rule 5.1a). Default 0."
},
"holes": {
"type": "array",
"items": {
"type": "object",
"required": [
"par",
"gross",
"strokes"
],
"properties": {
"par": {
"type": "integer",
"maximum": 6,
"minimum": 3,
"description": "Hole par."
},
"gross": {
"type": "integer",
"maximum": 30,
"minimum": 1,
"description": "Gross strokes."
},
"strokes": {
"type": "integer",
"maximum": 4,
"minimum": -2,
"description": "Handicap strokes received (negative for a plus handicap)."
}
},
"additionalProperties": false
},
"maxItems": 18,
"description": "Exactly 18 holes; each score is limited to net double bogey (par + 2 + strokes), or par + 5 before a Handicap Index exists."
},
"holesPlayed": {
"enum": [
9,
18
],
"type": "integer",
"description": "Default 18. 9 returns unsupported."
},
"slopeRating": {
"type": "integer",
"maximum": 155,
"minimum": 55,
"description": "Slope Rating."
},
"courseRating": {
"type": "number",
"maximum": 90,
"minimum": 20,
"description": "Course Rating."
},
"indexEstablished": {
"type": "boolean",
"description": "Default true. False: limit holes to par + 5 (Rule 3.1a)."
},
"adjustedGrossScore": {
"type": "integer",
"maximum": 300,
"minimum": 18,
"description": "18-hole adjusted gross score. Give this or holes."
}
},
"additionalProperties": false
},
"differentials": {
"type": "array",
"items": {
"type": "number",
"maximum": 80,
"minimum": -20,
"description": "A Score Differential."
},
"maxItems": 40,
"minItems": 1,
"description": "Scoring record, oldest first; the most recent 20 are used."
},
"lowHandicapIndex": {
"type": "number",
"maximum": 54,
"minimum": -10,
"description": "Low Handicap Index (365 days), used only to detect that the soft cap would apply."
}
},
"description": "For sport=golf: a round, a list of differentials, or both.",
"additionalProperties": false
},
"sport": {
"enum": [
"tennis",
"golf",
"cricket"
],
"type": "string",
"description": "Selects which block below is read."
},
"tennis": {
"type": "object",
"required": [
"points"
],
"properties": {
"noAd": {
"type": "boolean",
"description": "Appendix VI No-Ad: a deciding point at deuce. Default false."
},
"claim": {
"type": "object",
"properties": {
"games": {
"type": "array",
"items": {
"type": "integer",
"maximum": 20,
"minimum": 0,
"description": "games or sets"
},
"maxItems": 2,
"minItems": 2,
"description": "Games in the current set [a, b] (0-0 after a set ends)."
},
"server": {
"enum": [
"a",
"b"
],
"type": "string",
"description": "Who serves the next point."
},
"winner": {
"enum": [
"a",
"b"
],
"type": "string"
},
"setsWon": {
"type": "array",
"items": {
"type": "integer",
"maximum": 20,
"minimum": 0,
"description": "games or sets"
},
"maxItems": 2,
"minItems": 2,
"description": "Sets won [a, b]."
}
},
"description": "Optional claims to verify against the replay.",
"additionalProperties": false
},
"bestOf": {
"enum": [
3,
5
],
"type": "integer",
"description": "Default 3."
},
"points": {
"type": "string",
"maxLength": 2000,
"minLength": 1,
"description": "Point winners from the first point of the match, one character each: \"a\" or \"b\" (players, not server/receiver). Up to 2000."
},
"finalSet": {
"enum": [
"tiebreak",
"advantage",
"super-tiebreak-10"
],
"type": "string",
"description": "tiebreak (default): 7-point tie-break at 6-6 in every set. advantage: no tie-break in the final set. super-tiebreak-10: a 10-point tie-break replaces the final set (Appendix VI)."
},
"firstServer": {
"enum": [
"a",
"b"
],
"type": "string",
"description": "Who serves the first game. Default a."
}
},
"description": "For sport=tennis.",
"additionalProperties": false
},
"cricket": {
"type": "object",
"required": [
"events"
],
"properties": {
"claim": {
"type": "object",
"properties": {
"runs": {
"type": "integer",
"minimum": 0,
"description": "Claimed total runs."
},
"overs": {
"type": "string",
"maxLength": 8,
"description": "Claimed overs.balls, for example \"3.4\"."
},
"maidens": {
"type": "integer",
"maximum": 200,
"minimum": 0,
"description": "Claimed maiden overs."
},
"wickets": {
"type": "integer",
"maximum": 10,
"minimum": 0,
"description": "Claimed wickets."
},
"validBalls": {
"type": "integer",
"maximum": 1200,
"minimum": 0,
"description": "Claimed valid balls bowled."
},
"inningsOver": {
"type": "boolean",
"description": "Claimed that the innings has ended (needs maxOvers or all wickets down)."
}
},
"additionalProperties": false
},
"events": {
"type": "array",
"items": {
"type": "object",
"required": [
"type"
],
"properties": {
"runs": {
"type": "integer",
"maximum": 12,
"minimum": 0,
"description": "ball: runs scored. wide/noball: runs in addition to the 1-run penalty. Default 0."
},
"type": {
"enum": [
"ball",
"wide",
"noball",
"dead"
],
"type": "string",
"description": "ball: a valid delivery. wide / noball: delivery that does not count (Laws 21, 22). dead: called dead before the striker could play it (Law 17.3.2.1)."
},
"wicket": {
"type": "boolean",
"description": "A batter was dismissed on this delivery."
},
"runsKind": {
"enum": [
"bat",
"bye",
"legbye"
],
"type": "string",
"description": "Whose runs: default bat. Not for wides."
}
},
"additionalProperties": false
},
"maxItems": 1000,
"minItems": 1,
"description": "Deliveries in order."
},
"maxOvers": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Innings limit in overs, if any."
},
"maxWickets": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Wickets that end the innings. Default 10."
}
},
"description": "For sport=cricket: one innings, ball by ball.",
"additionalProperties": false
}
},
"additionalProperties": false
}Settlement date for a trade date: US equities T+1 on NYSE and Federal Reserve days, or T+n on a caller calendar — Computes the settlement date for a trade date under US equities T+1 (17 CFR 240.15c6-1, compliance date 2024-05-28) counting only days when the NYSE and the Federal Reserve Banks are open, or T+n on a named or caller calendar, and checks an asserted settlement date. The settlement-day rule (NYSE and Reserve Banks both open, so Columbus Day and Veterans Day are skipped) is our inference, not a publ
| Argument | Type | Description |
|---|---|---|
| weekend | array | Non-business weekdays, 0=Sunday..6=Saturday. Default [0, 6]; use [5, 6] for a Friday/Saturday weekend. |
| calendar | string | Named holiday calendar with a source and supported date range (outside it the answer is unsupported), weekends-only (Saturday/Sunday only), or caller (only the holidays you list). |
| holidays | array | Extra non-business dates YYYY-MM-DD (company closures, a calendar we do not carry). |
| cycleDays | integer | custom only. |
| tradeDate* | string | |
| settlement* | string | us-equities: T+1 since 2024-05-28 on the us-equities-settlement calendar (2026-2028). custom: cycleDays on calendar/holidays/weekend. |
| claimedSettlementDate | string |
Is this lot still within shelf life on a given date? (unopened and after-opening limits, minimum remaining days) — For up to 100 lots, computes the expiry date from manufacture/fill date + shelf life (days, weeks, months, years; month arithmetic clamps to month end) and from opened date + after-opening life, takes the earlier, and checks it against a caller asOf date and an optional minimum remaining days at receipt; flags a labelled expiry that disagrees with the computed one. The last day of life is the expi
| Argument | Type | Description |
|---|---|---|
| asOf* | string | |
| items* | array |
{
"type": "object",
"required": [
"asOf",
"items"
],
"properties": {
"asOf": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"maxLength": 64
},
"madeOn": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
},
"openedOn": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
},
"shelfLife": {
"type": "object",
"required": [
"value",
"unit"
],
"properties": {
"unit": {
"enum": [
"days",
"weeks",
"months",
"years"
],
"type": "string"
},
"value": {
"type": "integer",
"maximum": 36500,
"minimum": 0
}
}
},
"afterOpening": {
"type": "object",
"required": [
"value",
"unit"
],
"properties": {
"unit": {
"enum": [
"days",
"weeks",
"months",
"years"
],
"type": "string"
},
"value": {
"type": "integer",
"maximum": 36500,
"minimum": 0
}
}
},
"labelledExpiry": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
},
"minRemainingDays": {
"type": "integer",
"maximum": 36500,
"minimum": 0
}
}
},
"maxItems": 100,
"minItems": 1
}
},
"additionalProperties": false
}Site access: caller access rules against observed site facts — Checks whether an intended action on a website (read, crawl, submit, log in, ...) satisfies the access rules the caller supplies (robots rule read, terms clause, login present, rate-limit budget, captcha seen) against facts the caller observed, and says which rule blocked it or which fact is missing. For an agent deciding whether to proceed or ask. It is a reading of the caller's rules, not legal
| Argument | Type | Description |
|---|---|---|
| asOf | string | Reference instant (ISO date or instant) for evidence age; required only when a need sets maxAgeDays. The check never reads the clock. |
| rules* | array | Access rules: needs that must hold, or with forbid:true, conditions that must not apply. |
| action* | string | The intended action, matched against each rule's appliesTo. |
| evidence* | array | Observed site facts. |
{
"type": "object",
"required": [
"action",
"rules",
"evidence"
],
"properties": {
"asOf": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"maxLength": 40,
"description": "Reference instant (ISO date or instant) for evidence age; required only when a need sets maxAgeDays. The check never reads the clock."
},
"rules": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"needs"
],
"properties": {
"id": {
"type": "string",
"maxLength": 100
},
"mode": {
"enum": [
"all",
"any",
"atLeast"
],
"type": "string",
"description": "How the needs combine. Default all; with forbid:true the default is any (the requirement is unmet as soon as one listed need applies), and all means only the conjunction is prohibited."
},
"text": {
"type": "string",
"maxLength": 500,
"description": "Free text echoed in witnesses."
},
"needs": {
"type": "array",
"items": {
"type": "object",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"maxLength": 100,
"description": "Evidence key this need reads."
},
"max": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "Inclusive upper bound, same comparison rules as min."
},
"min": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 40
}
],
"description": "Inclusive lower bound. Numbers compare numerically; two dotted-digit strings (1.10.2) compare segment by segment."
},
"oneOf": {
"type": "array",
"items": {
"description": "Allowed JSON value."
},
"maxItems": 50,
"description": "The evidence value must equal one of these."
},
"equals": {
"description": "The evidence value must equal this JSON value (deep equality)."
},
"maxAgeDays": {
"type": "number",
"maximum": 36500,
"minimum": 0,
"description": "Evidence must be dated (asOf on the evidence item) and at most this many days before the request asOf."
}
},
"additionalProperties": false
},
"maxItems": 20,
"minItems": 1
},
"forbid": {
"type": "boolean",
"description": "The needs describe a prohibited condition; the requirement holds only when they are all shown not to apply."
},
"atLeast": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "With mode atLeast: how many needs must hold."
},
"optional": {
"type": "boolean",
"description": "Reported, never changes the status."
},
"appliesTo": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"description": "Action this rule governs."
},
"maxItems": 20,
"description": "Omit to apply to every action."
}
},
"additionalProperties": false
},
"maxItems": 100,
"minItems": 1,
"description": "Access rules: needs that must hold, or with forbid:true, conditions that must not apply."
},
"action": {
"type": "string",
"maxLength": 60,
"description": "The intended action, matched against each rule's appliesTo."
},
"evidence": {
"type": "array",
"items": {
"type": "object",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"maxLength": 100
},
"asOf": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"maxLength": 40,
"description": "When this was observed (ISO date or instant)."
},
"value": {
"description": "Observed JSON value. Omitted means the fact is present with no value; false or null means observed absent."
},
"source": {
"type": "string",
"maxLength": 200
}
},
"additionalProperties": false
},
"maxItems": 500,
"description": "Observed site facts."
}
},
"additionalProperties": false
}Common free time across participants: intersect availability windows, report who blocks — Intersects up to 20 participants' free windows (up to 200 each, half-open RFC 3339 intervals with Z or offsets, so mixed time zones are fine) into the common slots at least minMinutes long, optionally clipped to a search window; when nothing fits, names the participants whose removal would create a slot. Built for an agent scheduling a meeting from already-fetched availability. It does not read ca
| Argument | Type | Description |
|---|---|---|
| window | object | Only consider this range. |
| minMinutes | integer | Minimum slot length; default 1. |
| participants* | array |
{
"type": "object",
"required": [
"participants"
],
"properties": {
"window": {
"type": "object",
"required": [
"start",
"end"
],
"properties": {
"end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|z|[+-]\\d{2}:?\\d{2})$",
"maxLength": 36
},
"start": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|z|[+-]\\d{2}:?\\d{2})$",
"maxLength": 36
}
},
"description": "Only consider this range."
},
"minMinutes": {
"type": "integer",
"maximum": 10080,
"minimum": 1,
"description": "Minimum slot length; default 1."
},
"participants": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"free"
],
"properties": {
"id": {
"type": "string",
"maxLength": 64
},
"free": {
"type": "array",
"items": {
"type": "object",
"required": [
"start",
"end"
],
"properties": {
"end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|z|[+-]\\d{2}:?\\d{2})$",
"maxLength": 36
},
"start": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|z|[+-]\\d{2}:?\\d{2})$",
"maxLength": 36
}
}
},
"maxItems": 200
}
}
},
"maxItems": 20,
"minItems": 2
}
},
"additionalProperties": false
}Sun position, sunrise and sunset for a place and instant (NOAA equations) — Computes sun elevation, azimuth, declination, equation of time, sunrise, solar noon and sunset (UTC) for a latitude/longitude and up to 100 caller-supplied instants using the NOAA Global Monitoring Laboratory solar calculator equations (Meeus). Polar day and polar night return sunrise and sunset as null with a reason, not an error. Reads no clock: every instant comes from the caller. Does not mode
| Argument | Type | Description |
|---|---|---|
| asOf* | string | ISO 8601 instant with Z or numeric offset; the call never reads the clock. |
| claim | object | Optional claim about the asOf instant to check; tolerances default to 0.5 deg and 2 minutes. |
| instants | array | Further instants, same place. |
| latitude* | number | Degrees north, -90 to 90. |
| longitude* | number | Degrees east, -180 to 180. |
| utcOffsetMinutes | integer | Offset from UTC used to define the local calendar day for sunrise/sunset (default 0). |
{
"type": "object",
"required": [
"latitude",
"longitude",
"asOf"
],
"properties": {
"asOf": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,3})?)?(Z|[+-]\\d{2}:\\d{2})$",
"maxLength": 40,
"description": "ISO 8601 instant with Z or numeric offset; the call never reads the clock."
},
"claim": {
"type": "object",
"properties": {
"sunset": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,3})?)?(Z|[+-]\\d{2}:\\d{2})$",
"maxLength": 40,
"description": "Claimed sunset, ISO 8601 with Z or offset."
},
"sunrise": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,3})?)?(Z|[+-]\\d{2}:\\d{2})$",
"maxLength": 40,
"description": "Claimed sunrise, ISO 8601 with Z or offset."
},
"azimuthDeg": {
"type": "number",
"maximum": 360,
"minimum": 0,
"description": "Claimed azimuth, degrees clockwise from north."
},
"toleranceDeg": {
"type": "number",
"maximum": 10,
"minimum": 0,
"description": "Angle tolerance in degrees."
},
"toleranceMinutes": {
"type": "number",
"maximum": 60,
"minimum": 0,
"description": "Time tolerance in minutes."
},
"elevationRefractedDeg": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Claimed apparent elevation including refraction."
}
},
"description": "Optional claim about the asOf instant to check; tolerances default to 0.5 deg and 2 minutes."
},
"instants": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,3})?)?(Z|[+-]\\d{2}:\\d{2})$",
"maxLength": 40,
"description": "ISO 8601 instant with Z or offset."
},
"maxItems": 99,
"description": "Further instants, same place."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Degrees north, -90 to 90."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Degrees east, -180 to 180."
},
"utcOffsetMinutes": {
"type": "integer",
"maximum": 840,
"minimum": -720,
"description": "Offset from UTC used to define the local calendar day for sunrise/sunset (default 0)."
}
},
"additionalProperties": false
}Normalize numbers, currency, phone numbers and units for text-to-speech — Rewrites digits in up to 20000 characters of text into spoken words for a TTS engine, for locales en-US and en-GB: cardinals, ordinals, years (with a preceding cue such as "in" or a month) and decades, decimals, percentages, currency with ISO 4217 minor units ("$12.50" -> "twelve dollars and fifty cents"), phone numbers read digit by digit, and SI/common units with locale spelling (meter/metre). O
| Argument | Type | Description |
|---|---|---|
| text* | string | |
| locale | string | BCP 47 tag. en-US (default) and en-GB are supported; anything else returns unsupported. |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 20000,
"minLength": 1
},
"locale": {
"type": "string",
"maxLength": 16,
"description": "BCP 47 tag. en-US (default) and en-GB are supported; anything else returns unsupported."
}
},
"additionalProperties": false
}Storage, demurrage or detention charge: free-time end date, chargeable days and tiered amount — Counts days between a received date and a released date for storage, demurrage, detention or parking charges: you state whether the receipt day and the release day count, how free days are counted (calendar or business days on a named or caller calendar), and a tiered per-day rate schedule by chargeable day number; returns the last free day, chargeable days, a per-tier breakdown and the total in m
| Argument | Type | Description |
|---|---|---|
| tiers* | array | |
| weekend | array | Non-business weekdays, 0=Sunday..6=Saturday. Default [0, 6]; use [5, 6] for a Friday/Saturday weekend. |
| calendar | string | Named holiday calendar with a source and supported date range (outside it the answer is unsupported), weekends-only (Saturday/Sunday only), or caller (only the holidays you list). |
| currency* | string | |
| freeDays* | integer | |
| holidays | array | Extra non-business dates YYYY-MM-DD (company closures, a calendar we do not carry). |
| receivedOn* | string | |
Subtitle lint: SRT and WebVTT overlaps, duration, reading speed, line length — Parses an SRT or WebVTT file (up to 400000 characters, 4000 cues) and checks every cue for an agent about to deliver or burn in captions: end after start, overlaps and out-of-order cues, minimum gap, minimum and maximum duration, lines per cue, characters per line and characters per second (markup tags are not counted). Rules come from a named profile (netflix-en-adult, netflix-en-children, values
| Argument | Type | Description |
|---|---|---|
| text* | string | The whole .srt or .vtt file. |
| custom | object | Your own rules; these override profile values. |
| format | string | Default: vtt if the text starts with WEBVTT, else srt. |
| profile | string | netflix-en-adult: 42 chars/line, 2 lines, 20 cps, 5/6 s to 7 s, 2-frame gap. netflix-en-children: same at 17 cps. |
| frameRate | number | Needed to turn a minimum gap in frames into milliseconds. |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 400000,
"minLength": 1,
"description": "The whole .srt or .vtt file."
},
"custom": {
"type": "object",
"properties": {
"maxCps": {
"type": "number",
"maximum": 100,
"minimum": 1
},
"minGapMs": {
"type": "number",
"maximum": 60000,
"minimum": 0
},
"minGapFrames": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"maxDurationMs": {
"type": "number",
"maximum": 600000,
"minimum": 1
},
"minDurationMs": {
"type": "number",
"maximum": 60000,
"minimum": 0
},
"maxLinesPerCue": {
"type": "integer",
"maximum": 20,
"minimum": 1
},
"maxCharsPerLine": {
"type": "integer",
"maximum": 500,
"minimum": 1
}
},
"description": "Your own rules; these override profile values."
},
"format": {
"enum": [
"srt",
"vtt"
],
"type": "string",
"description": "Default: vtt if the text starts with WEBVTT, else srt."
},
"profile": {
"enum": [
"netflix-en-adult",
"netflix-en-children"
],
"type": "string",
"description": "netflix-en-adult: 42 chars/line, 2 lines, 20 cps, 5/6 s to 7 s, 2-frame gap. netflix-en-children: same at 17 cps."
},
"frameRate": {
"type": "number",
"maximum": 240,
"minimum": 1,
"description": "Needed to turn a minimum gap in frames into milliseconds."
}
},
"additionalProperties": false
}Syllable counts per line, caller dictionary first, labelled English heuristic second — Counts syllables per word and per line for English text, using your dictionary entries first and otherwise a rule-based estimator (vowel groups, silent e, -ed/-es, consonant+le). Optionally checks each line against a target pattern such as 5-7-5. Where the rules cannot decide (vowel pairs like ia/io/eo, acronyms, numerals, non-Latin scripts) the word is a range or abstains, and a line whose count
| Argument | Type | Description |
|---|---|---|
| lines* | array | |
| pattern | array | Same length as lines. |
| dictionary | array | Caller counts; they override the rules. |
{
"type": "object",
"required": [
"lines"
],
"properties": {
"lines": {
"type": "array",
"items": {
"type": "string",
"maxLength": 500,
"description": "One line of text."
},
"maxItems": 50,
"minItems": 1
},
"pattern": {
"type": "array",
"items": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Target syllables for the line at the same position."
},
"maxItems": 50,
"description": "Same length as lines."
},
"dictionary": {
"type": "array",
"items": {
"type": "object",
"required": [
"word",
"syllables"
],
"properties": {
"word": {
"type": "string",
"maxLength": 60,
"description": "Word, matched case-insensitively."
},
"syllables": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Syllable count."
}
},
"additionalProperties": false
},
"maxItems": 500,
"description": "Caller counts; they override the rules."
}
},
"additionalProperties": false
}Global Customs & Tariff Engineering Optimizer — Classifies a product under the HTS with GRI reasoning and verifies the code and general (MFN) rate against the live USITC schedule, flags when a specific sibling subheading may outrank the chosen residual one, separates lower-duty options from reclassification risk with dollar exposure, lists lawful physical tariff-engineering changes, and drafts an accurate commercial invoice description. Leads w
| Argument | Type | Description |
|---|---|---|
| productUrl | string | Public product or spec-sheet page. Its text is read to supplement productDescription; if it cannot be read the request still succeeds and says so in warnings. |
| intendedUse* | string | |
| productName* | string | |
| originCountry* | string | |
| currentHtsCode | string | |
| customsValueUsd | number | Entered value, used to estimate duty and savings. |
| destinationCountry* | string | |
| materialsBreakdown* | array |
VAT / tax-id format and check digit (AT, BE, DE, DK, FI) — Checks the structure and check digit of up to 100 EU VAT numbers per call (Austria, Belgium, Germany, Denmark, Finland), for an agent about to put a supplier or customer VAT number on an invoice or into a record. Every other country answers unsupported rather than guessing a pattern. It never says whether the number is registered or active (that needs VIES or the national register), and a pass is
| Argument | Type | Description |
|---|---|---|
| items* | array |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"value"
],
"properties": {
"value": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "With or without the country prefix; spaces, dots and hyphens are ignored."
},
"country": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "ISO 3166 alpha-2 (EU VAT prefix). Optional when the value carries its prefix."
}
}
},
"maxItems": 100,
"minItems": 1
}
},
"additionalProperties": false
}Are these timing constraints satisfiable? Earliest/latest time per event, or the conflicting constraints — Solves a simple temporal network: up to 40 named time points, up to 200 difference constraints 'b is between min and max minutes after a' and optional fixed instants, relative to a caller origin instant. When consistent it returns each point's earliest and latest feasible instant (where bounded); when not, it returns the cycle of constraints that contradict each other, with the total impossible sl
| Argument | Type | Description |
|---|---|---|
| fixed | array | |
| origin* | string | Instant that point 'origin' (an implicit extra point) is at; all minutes are relative to it. |
| points* | array | |
| constraints* | array |
{
"type": "object",
"required": [
"origin",
"points",
"constraints"
],
"properties": {
"fixed": {
"type": "array",
"items": {
"type": "object",
"required": [
"point",
"at"
],
"properties": {
"at": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|z|[+-]\\d{2}:?\\d{2})$",
"maxLength": 36
},
"point": {
"type": "string",
"maxLength": 40
}
}
},
"maxItems": 40
},
"origin": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|z|[+-]\\d{2}:?\\d{2})$",
"maxLength": 36,
"description": "Instant that point 'origin' (an implicit extra point) is at; all minutes are relative to it."
},
"points": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_.-]{1,40}$",
"maxLength": 40
},
"maxItems": 40,
"minItems": 1
},
"constraints": {
"type": "array",
"items": {
"type": "object",
"required": [
"a",
"b"
],
"properties": {
"a": {
"type": "string",
"maxLength": 40
},
"b": {
"type": "string",
"maxLength": 40
},
"id": {
"type": "string",
"maxLength": 40
},
"maxMinutes": {
"type": "integer",
"maximum": 10000000,
"minimum": -10000000,
"description": "b - a <= max"
},
"minMinutes": {
"type": "integer",
"maximum": 10000000,
"minimum": -10000000,
"description": "b - a >= min"
}
}
},
"maxItems": 200
}
},
"additionalProperties": false
}DST hazards for hourly and daily buckets in a zone: skipped hours, repeated hours, 23- and 25-hour days — For a time zone and a date range of up to 1100 days, lists every offset transition and what it does to local bucketing: the hourly labels that never occur (spring-forward), the hourly labels that occur twice and would merge two real hours when grouped by local time (fall-back), and the 23-, 24.5- or 25-hour days; optionally checks up to 500 caller hourly labels (YYYY-MM-DDTHH:00) for non-existent
| Argument | Type | Description |
|---|---|---|
| to* | string | Last local date, inclusive. |
| from* | string | First local date, inclusive. |
| labels | array | Local hour labels to check, e.g. 2026-03-08T02:00. |
| timeZone* | string |
{
"type": "object",
"required": [
"timeZone",
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10,
"description": "Last local date, inclusive."
},
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10,
"description": "First local date, inclusive."
},
"labels": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?$",
"maxLength": 30
},
"maxItems": 500,
"description": "Local hour labels to check, e.g. 2026-03-08T02:00."
},
"timeZone": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_+-]*(/[A-Za-z0-9_+-]+){0,2}$",
"maxLength": 64
}
},
"additionalProperties": false
}SMPTE timecode conversion: drop-frame and non-drop, frames, exact seconds — Converts up to 200 timecodes, frame counts or times between SMPTE HH:MM:SS:FF (non-drop), HH:MM:SS;FF (drop-frame, 29.97 and 59.94), frame numbers and exact rational seconds, for an agent editing video, captions or logs at a stated frame rate. Rates are integers, a rational like 30000/1001, or the named 23.976, 29.97, 59.94, 119.88; any other decimal is rejected, never rounded. Integer arithmetic
| Argument | Type | Description |
|---|---|---|
| rate* | string | 24, 25, 30, 50, 60, 24000/1001, or the names 23.976, 29.97, 59.94, 119.88. |
| items* | array |
{
"type": "object",
"required": [
"rate",
"items"
],
"properties": {
"rate": {
"type": "string",
"maxLength": 16,
"minLength": 1,
"description": "24, 25, 30, 50, 60, 24000/1001, or the names 23.976, 29.97, 59.94, 119.88."
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"frames": {
"type": "integer",
"maximum": 10000000,
"minimum": 0
},
"seconds": {
"type": "string",
"maxLength": 32,
"description": "Decimal 12.5 or rational 1001/30."
},
"timecode": {
"type": "string",
"maxLength": 16,
"description": "HH:MM:SS:FF, or HH:MM:SS;FF / HH:MM:SS.FF for drop-frame."
}
}
},
"maxItems": 200,
"minItems": 1
}
},
"additionalProperties": false
}One-dimensional tolerance stack-up (worst-case and RSS) — Computes the minimum and maximum of a linear dimensional stack (the gap) from signed contributions with symmetric, unequal-bilateral, unilateral or min/max limits, both by exact worst-case arithmetic and by root-sum-square, names the dominant contributor and tests the gap against a required minimum and/or maximum. For mechanical designers and agents checking clearances. It does not do 2D or 3D sta
| Argument | Type | Description |
|---|---|---|
| unit | string | Label for the single unit all numbers share (not converted). |
| method | string | Which result decides status against the requirement (default worst-case). Both are always reported. |
| dimensions* | array | At most 100. Give nominal with tol, or nominal with plus and/or minus (unilateral: one of them), or min and max. |
| sigmaLevel | number | RSS: each tolerance is this many sigma (default 3). |
| reportSigma | number | RSS: report the gap at this many sigma (default equals sigmaLevel). |
| requirement | object | Allowed gap range. |
{
"type": "object",
"required": [
"dimensions"
],
"properties": {
"unit": {
"type": "string",
"maxLength": 16,
"description": "Label for the single unit all numbers share (not converted)."
},
"method": {
"enum": [
"worst-case",
"rss"
],
"type": "string",
"description": "Which result decides status against the requirement (default worst-case). Both are always reported."
},
"dimensions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"max": {
"type": "number",
"maximum": 1000000000,
"minimum": -1000000000,
"description": "Largest allowed size (limits form, with min)."
},
"min": {
"type": "number",
"maximum": 1000000000,
"minimum": -1000000000,
"description": "Smallest allowed size (limits form, with max)."
},
"tol": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Symmetric bilateral tolerance (nominal ± tol)."
},
"name": {
"type": "string",
"maxLength": 80,
"description": "Label used in witnesses."
},
"plus": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Upper deviation magnitude."
},
"sign": {
"enum": [
1,
-1
],
"type": "integer",
"description": "+1 adds the dimension to the gap (default), -1 subtracts it."
},
"minus": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Lower deviation magnitude."
},
"nominal": {
"type": "number",
"maximum": 1000000000,
"minimum": -1000000000,
"description": "Nominal size."
}
}
},
"maxItems": 100,
"minItems": 1,
"description": "At most 100. Give nominal with tol, or nominal with plus and/or minus (unilateral: one of them), or min and max."
},
"sigmaLevel": {
"type": "number",
"maximum": 10,
"minimum": 0.5,
"description": "RSS: each tolerance is this many sigma (default 3)."
},
"reportSigma": {
"type": "number",
"maximum": 10,
"minimum": 0.5,
"description": "RSS: report the gap at this many sigma (default equals sigmaLevel)."
},
"requirement": {
"type": "object",
"properties": {
"max": {
"type": "number",
"maximum": 1000000000,
"minimum": -1000000000,
"description": "Gap must be at most this."
},
"min": {
"type": "number",
"maximum": 1000000000,
"minimum": -1000000000,
"description": "Gap must be at least this."
}
},
"description": "Allowed gap range."
}
},
"additionalProperties": false
}Transcribe an audio or video file URL (Whisper, timestamps, SRT, VTT) — Transcribes a public audio or video FILE URL (podcast enclosure, meeting recording, voice memo; mp3, wav, mp4/m4a, ogg, webm, flac; up to 25 MB and 30 minutes) with Whisper large-v3-turbo on Cloudflare Workers AI. Returns timestamped segments plus SRT and VTT subtitles and the plain text, bound to the media's SHA-256. Does NOT accept YouTube, Spotify or any streaming page (the URL must be the medi
| Argument | Type | Description |
|---|---|---|
| url* | string | https URL of the audio or video file itself. |
| formats | array | Outputs to include; default all. |
| language | string | ISO 639-1 language code of the speech (for example en); detected when omitted. |
| max_minutes | integer | Reject audio longer than this, default 30. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"pattern": "^https://",
"maxLength": 2048,
"minLength": 8,
"description": "https URL of the audio or video file itself."
},
"formats": {
"type": "array",
"items": {
"enum": [
"segments",
"srt",
"vtt",
"text"
],
"type": "string"
},
"maxItems": 4,
"minItems": 1,
"description": "Outputs to include; default all."
},
"language": {
"type": "string",
"pattern": "^[a-z]{2}$",
"description": "ISO 639-1 language code of the speech (for example en); detected when omitted."
},
"max_minutes": {
"type": "integer",
"maximum": 30,
"minimum": 1,
"description": "Reject audio longer than this, default 30."
}
},
"additionalProperties": false
}Exact unit conversion with dimensional analysis (NIST SP 811) — Converts up to 100 values between units for an agent that needs the exact factor and a refusal when the units do not match: SI and NIST SP 811 length, mass, time, volume, pressure, energy, power, temperature, with compound expressions like kg*m/s^2. Rejects incompatible dimensions, converts absolute temperatures affinely through kelvin and temperature differences linearly, and converts mass to vol
| Argument | Type | Description |
|---|---|---|
| items* | array | Conversions to run. |
| density | object | Default density for items that cross mass and volume. |
| precision | integer | Significant digits of the reported value. Default 12. |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"value",
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"maxLength": 80,
"description": "Target unit expression."
},
"from": {
"type": "string",
"maxLength": 80,
"description": "Unit expression: symbols, SI prefixes, * / ^ and parentheses, e.g. m/s^2, kg*m/s2, degF, cup_us, lb/ft3. Bare cup/tbsp/tsp/gal/pt/qt/floz/cal/hp/ton are ambiguous and answer unknown with the candidates."
},
"kind": {
"enum": [
"absolute",
"difference"
],
"type": "string",
"description": "absolute (default): a temperature reading, converted affinely through kelvin. difference: a temperature interval, converted linearly."
},
"label": {
"type": "string",
"maxLength": 80,
"description": "Free label echoed back."
},
"value": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"pattern": "^-?\\d{1,30}(\\.\\d{1,30})?([eE][+-]?\\d{1,3})?$",
"maxLength": 50
}
],
"description": "A finite number, or a decimal string when the digits must stay exact (\"236.5882365\"). Magnitude at most 1e15."
},
"claimed": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"pattern": "^-?\\d{1,30}(\\.\\d{1,30})?([eE][+-]?\\d{1,3})?$",
"maxLength": 50
}
],
"description": "Optional claimed result in the target unit; a mismatch beyond relTolerance fails with expected vs actual."
},
"density": {
"type": "object",
"required": [
"value",
"unit"
],
"properties": {
"unit": {
"type": "string",
"maxLength": 40,
"description": "Mass per volume unit expression, e.g. g/mL, kg/m3, lb/ft3, oz/cup_us."
},
"value": {
"type": "number",
"maximum": 1000000000,
"minimum": 1e-9,
"description": "Caller-supplied mass per volume. Never looked up: no ingredient density table is shipped."
}
},
"description": "Per-item density, overriding the top-level one. Required to cross mass and volume (cups to grams).",
"additionalProperties": false
},
"relTolerance": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Relative tolerance for claimed. Default 1e-9."
}
},
"additionalProperties": false
},
"maxItems": 100,
"minItems": 1,
"description": "Conversions to run."
},
"density": {
"type": "object",
"required": [
"value",
"unit"
],
"properties": {
"unit": {
"type": "string",
"maxLength": 40,
"description": "Mass per volume unit expression, e.g. g/mL, kg/m3, lb/ft3, oz/cup_us."
},
"value": {
"type": "number",
"maximum": 1000000000,
"minimum": 1e-9,
"description": "Caller-supplied mass per volume. Never looked up: no ingredient density table is shipped."
}
},
"description": "Default density for items that cross mass and volume.",
"additionalProperties": false
},
"precision": {
"type": "integer",
"maximum": 30,
"minimum": 1,
"description": "Significant digits of the reported value. Default 12."
}
},
"additionalProperties": false
}VIN decode: manufacturer (WMI), model year, check digit — Decodes up to 50 VINs per call for an agent handling a vehicle listing, claim or order: validates the 17 characters and letters I/O/Q, the position-9 check digit (49 CFR 565.15), the world manufacturer identifier from a bundled NHTSA vPIC snapshot, and the model year from position 10. Position 10 repeats every 30 years: pass vehicleClass light (position 7 resolves the century) or asOf, otherwise b
| Argument | Type | Description |
|---|---|---|
| items* | array |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"vin"
],
"properties": {
"vin": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"asOf": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Reference date (YYYY-MM-DD) used to drop model years more than one year after it. No clock is read."
},
"vehicleClass": {
"enum": [
"light",
"other"
],
"type": "string",
"description": "light: passenger car, MPV or truck up to 4536 kg GVWR (position 7 fixes the model-year century). other: all other vehicles."
}
}
},
"maxItems": 50,
"minItems": 1
}
},
"additionalProperties": false
}Week number and week-year for dates under ISO 8601, US or custom rules (53-week years) — Returns the week number, week-year, number of weeks in that year and the week's first and last day for up to 200 dates under ISO 8601 (Monday start, week 1 holds 4 January), the US convention (Sunday start, week 1 holds 1 January) or a custom weekStart/minimalDays rule, and checks an asserted week or week-year (2027-01-01 is ISO 2026-W53). Built for an agent reading or writing week-based dates in
| Argument | Type | Description |
|---|---|---|
| items* | array | |
| system* | string | iso: weekStart Monday, minimalDays 4. us: weekStart Sunday, minimalDays 1. custom: give weekStart and minimalDays. |
| weekStart | integer | 0=Sunday..6=Saturday (custom). |
| minimalDays | integer | Days of the new year the first week must contain (custom). |
{
"type": "object",
"required": [
"system",
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"date"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
},
"claimedWeek": {
"type": "integer",
"maximum": 54,
"minimum": 1
},
"claimedWeekYear": {
"type": "integer",
"maximum": 3000,
"minimum": 1000
}
}
},
"maxItems": 200,
"minItems": 1
},
"system": {
"enum": [
"iso",
"us",
"custom"
],
"type": "string",
"description": "iso: weekStart Monday, minimalDays 4. us: weekStart Sunday, minimalDays 1. custom: give weekStart and minimalDays."
},
"weekStart": {
"type": "integer",
"maximum": 6,
"minimum": 0,
"description": "0=Sunday..6=Saturday (custom)."
},
"minimalDays": {
"type": "integer",
"maximum": 7,
"minimum": 1,
"description": "Days of the new year the first week must contain (custom)."
}
},
"additionalProperties": false
}X.509 certificate inspection from PEM — Takes a PEM-encoded X.509 certificate and returns its fields (subject, issuer, serial, validity window, SANs, key usage, EKU, basic constraints, signature algorithm, public key algorithm and bit size) plus a fail-on-issue audit: expired or not-yet-valid, hostname/SAN mismatch per RFC 6125 §6.4.3 wildcards, weak signature (SHA-1), short RSA (<2048), serverAuth without SAN (CABF BR 7.1.4.2.1). Decod
| Argument | Type | Description |
|---|---|---|
| pem* | string | A PEM block beginning with '-----BEGIN CERTIFICATE-----'. |
| nowIso | string | Override 'now' for deterministic tests. |
| hostname | string | Optional hostname to check against the certificate's SANs. |
| trustAnchors | array | Trust anchors (PEM). When present, chain cryptographic verification runs. |
| intermediates | array | Intermediate certs (PEM) between leaf and anchor. |
| maxChainDepth | integer | Chain depth cap (default 8). |
{
"type": "object",
"required": [
"pem"
],
"properties": {
"pem": {
"type": "string",
"maxLength": 200000,
"description": "A PEM block beginning with '-----BEGIN CERTIFICATE-----'."
},
"nowIso": {
"type": "string",
"maxLength": 40,
"description": "Override 'now' for deterministic tests."
},
"hostname": {
"type": "string",
"maxLength": 255,
"description": "Optional hostname to check against the certificate's SANs."
},
"trustAnchors": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20,
"description": "Trust anchors (PEM). When present, chain cryptographic verification runs."
},
"intermediates": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"description": "Intermediate certs (PEM) between leaf and anchor."
},
"maxChainDepth": {
"type": "integer",
"description": "Chain depth cap (default 8)."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 15, 2026.
Takes a password, API key or token as an argument, so the secret passes through the model's context and chat logs.
Fix: Read credentials from the server's own configuration (environment, OAuth) instead of a tool argument.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.
| largest-remainder (default): one unit at a time to the part with the largest rounding claim, ties to the lowest index. first / last: the whole residual to the first / last part with positive weight. |
{
"type": "object",
"required": [
"total"
],
"properties": {
"parts": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Equal split into this many parts."
},
"total": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
},
"weights": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 28
},
"maxItems": 500,
"minItems": 1,
"description": "Non-negative decimal-string weights, e.g. [\"1\",\"1\",\"2\"] or percentages. Give weights or parts."
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "ISO 4217 alphabetic code, upper case."
},
"exponent": {
"type": "integer",
"maximum": 8,
"minimum": 0,
"description": "Override the ISO 4217 exponent; required for codes not on the list."
},
"rounding": {
"enum": [
"half-up",
"half-down",
"half-even",
"up",
"down",
"ceiling",
"floor"
],
"type": "string",
"description": "Rounding of each share before the residual is moved. Default half-even. half-up: ties away from zero. half-down: ties toward zero. half-even: ties to the even neighbour. up: away from zero. down: toward zero. ceiling: toward +infinity. floor: toward -infinity."
},
"remainder": {
"enum": [
"largest-remainder",
"first",
"last"
],
"type": "string",
"description": "largest-remainder (default): one unit at a time to the part with the largest rounding claim, ties to the lowest index. first / last: the whole residual to the first / last part with positive weight."
}
},
"additionalProperties": false
}| string |
| Venue zone in which hours apply. |
| bufferMinutes | integer | Required gap on each side of the appointment. |
| durationMinutes* | integer |
| minNoticeMinutes | integer | Needs asOf. |
{
"type": "object",
"required": [
"start",
"durationMinutes",
"timeZone",
"hours"
],
"properties": {
"asOf": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|z|[+-]\\d{2}:?\\d{2})$",
"maxLength": 36,
"description": "Reference instant for minimum notice."
},
"hours": {
"type": "array",
"items": {
"type": "object",
"required": [
"days",
"open",
"close"
],
"properties": {
"days": {
"type": "array",
"items": {
"type": "integer",
"maximum": 6,
"minimum": 0
},
"maxItems": 7,
"minItems": 1,
"description": "0=Sunday..6=Saturday."
},
"open": {
"type": "string",
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
"maxLength": 5
},
"close": {
"type": "string",
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
"maxLength": 5,
"description": "Exclusive end, local; must be after open (no overnight blocks)."
}
}
},
"maxItems": 28,
"minItems": 1
},
"start": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|z|[+-]\\d{2}:?\\d{2})$",
"maxLength": 36
},
"weekend": {
"type": "array",
"items": {
"type": "integer",
"maximum": 6,
"minimum": 0
},
"maxItems": 6,
"description": "Ignored for hours; with a named calendar only its holidays are used."
},
"bookings": {
"type": "array",
"items": {
"type": "object",
"required": [
"start",
"end"
],
"properties": {
"end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|z|[+-]\\d{2}:?\\d{2})$",
"maxLength": 36
},
"start": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|z|[+-]\\d{2}:?\\d{2})$",
"maxLength": 36
}
}
},
"maxItems": 500
},
"calendar": {
"enum": [
"us-federal",
"us-federal-reserve",
"nyse",
"us-equities-settlement",
"uk-england-and-wales",
"uk-scotland",
"uk-northern-ireland",
"weekends-only",
"caller"
],
"type": "string",
"description": "Optional named holiday calendar for closed days (unsupported outside its range). Without it only holidays/weekend you list apply; hours decide the weekdays."
},
"holidays": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
},
"maxItems": 400,
"description": "Extra non-business dates YYYY-MM-DD (company closures, a calendar we do not carry)."
},
"timeZone": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_+-]*(/[A-Za-z0-9_+-]+){0,2}$",
"maxLength": 64,
"description": "Venue zone in which hours apply."
},
"bufferMinutes": {
"type": "integer",
"maximum": 1440,
"minimum": 0,
"description": "Required gap on each side of the appointment."
},
"durationMinutes": {
"type": "integer",
"maximum": 1440,
"minimum": 1
},
"minNoticeMinutes": {
"type": "integer",
"maximum": 525600,
"minimum": 0,
"description": "Needs asOf."
}
},
"additionalProperties": false
}| extensionNotices | array |
| gapThresholdDays | integer | Report gaps between dated events longer than this (default 30). |
| requestReference | string | The agency's request or tracking number, for the follow-up letter. |
{
"type": "object",
"required": [
"jurisdiction",
"requestDate",
"documents"
],
"properties": {
"asOfDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(?:[T ].*)?$",
"maxLength": 40,
"description": "Observation date when responseDate is omitted; defaults to today (UTC)."
},
"documents": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"text"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"text": {
"type": "string",
"maxLength": 1500000
}
},
"additionalProperties": false
},
"maxItems": 40,
"minItems": 1
},
"agencyName": {
"type": "string",
"maxLength": 200,
"description": "Agency that received the request; fills the follow-up letter."
},
"requestDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(?:[T ].*)?$",
"maxLength": 40,
"description": "Date the agency received the request (YYYY-MM-DD or RFC 3339; read in the offset written)."
},
"jurisdiction": {
"type": "string",
"maxLength": 40,
"minLength": 2,
"description": "OnRecord jurisdiction code. Only \"CA_CPRA\" (alias \"US-CA\") has a statute table; any other value returns clock \"unknown_jurisdiction\" while document checks still run."
},
"responseDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(?:[T ].*)?$",
"maxLength": 40,
"description": "Date of the agency's determination/response. Omit if none yet."
},
"requesterName": {
"type": "string",
"maxLength": 200,
"description": "Your name, for the follow-up letter signature."
},
"extensionNotices": {
"type": "array",
"items": {
"type": "object",
"required": [
"noticeDate",
"expectedDate",
"reason",
"noticeSource"
],
"properties": {
"reason": {
"type": "string",
"maxLength": 80,
"description": "One of SEPARATE_FIELD_FACILITIES, VOLUMINOUS_RECORDS, INTERAGENCY_CONSULTATION, DATA_COMPILATION, CYBERATTACK_SYSTEMS_UNAVAILABLE, DECLARED_EMERGENCY_OPERATIONAL_IMPACT."
},
"noticeDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(?:[T ].*)?$",
"maxLength": 40
},
"expectedDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(?:[T ].*)?$",
"maxLength": 40,
"description": "Date the agency says its determination will be dispatched."
},
"noticeSource": {
"type": "string",
"maxLength": 500,
"description": "Identifier of the written notice (letter, portal message). Empty makes the extension defective."
}
},
"additionalProperties": false
},
"maxItems": 5
},
"gapThresholdDays": {
"type": "integer",
"maximum": 3650,
"minimum": 1,
"description": "Report gaps between dated events longer than this (default 30)."
},
"requestReference": {
"type": "string",
"maxLength": 100,
"description": "The agency's request or tracking number, for the follow-up letter."
}
},
"additionalProperties": false
}| claimedPenaltyMinor | integer |
{
"type": "object",
"required": [
"startAt",
"changeAt",
"amountMinor",
"currency",
"tiers",
"rounding"
],
"properties": {
"tiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 64
},
"daysBefore": {
"type": "integer",
"maximum": 3650,
"minimum": 0,
"description": "...later than the local date of start minus this many days at atLocalTime."
},
"penaltyBps": {
"type": "integer",
"maximum": 10000,
"minimum": 0,
"description": "Percent of the amount in basis points. Exactly one of penaltyBps or penaltyMinor."
},
"atLocalTime": {
"type": "string",
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
"maxLength": 5,
"description": "With daysBefore."
},
"hoursBefore": {
"type": "integer",
"maximum": 87600,
"minimum": 0,
"description": "This tier applies when the change is later than start minus this many hours. Exactly one of hoursBefore or daysBefore."
},
"penaltyMinor": {
"type": "integer",
"maximum": 1000000000000,
"minimum": 0
}
}
},
"maxItems": 12,
"minItems": 1
},
"startAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|z|[+-]\\d{2}:?\\d{2})$",
"maxLength": 36
},
"changeAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|z|[+-]\\d{2}:?\\d{2})$",
"maxLength": 36,
"description": "The moment of cancellation/change; never read from the clock."
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"maxLength": 3
},
"rounding": {
"enum": [
"half-up",
"floor",
"ceil"
],
"type": "string",
"description": "Applied to percentage penalties."
},
"timeZone": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_+-]*(/[A-Za-z0-9_+-]+){0,2}$",
"maxLength": 64,
"description": "Needed for daysBefore tiers."
},
"noShowTier": {
"type": "string",
"maxLength": 64,
"description": "Tier name charged when changeAt is after startAt; default the most severe tier."
},
"amountMinor": {
"type": "integer",
"maximum": 1000000000000,
"minimum": 0
},
"claimedPenaltyMinor": {
"type": "integer",
"maximum": 1000000000000,
"minimum": 0
}
},
"additionalProperties": false
}| holidays | array | Extra non-business dates YYYY-MM-DD (company closures, a calendar we do not carry). |
| timeZone | string | IANA zone for deadlineTime. |
| direction | string | Default after. before counts backward from start (for 'at least N days before the hearing'). |
| deadlineTime | string | Local HH:MM at which the deadline expires on the deadline date; needs timeZone to produce an instant. |
| disambiguation | string | How to read a deadline time that falls in a DST gap (earlier: before-gap offset reading backward; later: shifted forward) or overlap (earlier/later occurrence). Without it, a gap or overlap returns unknown with both candidates. |
| claimedDeadline | string | A deadline date someone asserted; the check fails with the computed date if it differs. |
{
"type": "object",
"required": [
"start",
"days",
"counting",
"calendar"
],
"properties": {
"days": {
"type": "integer",
"maximum": 3650,
"minimum": 0
},
"start": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}([Tt ]\\d{2}:\\d{2}(:\\d{2})?)?$",
"maxLength": 19,
"description": "Local date YYYY-MM-DD, or local date-time YYYY-MM-DDTHH:MM[:SS] (the notice/receipt moment). Never read from the clock."
},
"cutoff": {
"type": "string",
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
"maxLength": 5,
"description": "Local HH:MM. With a date-time start (direction after), a start strictly later than the cutoff, or on a non-business day, is deemed received on the next business day. 17:00 exactly is on time. Without cutoff there is no roll."
},
"weekend": {
"type": "array",
"items": {
"type": "integer",
"maximum": 6,
"minimum": 0
},
"maxItems": 6,
"description": "Non-business weekdays, 0=Sunday..6=Saturday. Default [0, 6]; use [5, 6] for a Friday/Saturday weekend."
},
"calendar": {
"enum": [
"us-federal",
"us-federal-reserve",
"nyse",
"us-equities-settlement",
"uk-england-and-wales",
"uk-scotland",
"uk-northern-ireland",
"weekends-only",
"caller"
],
"type": "string",
"description": "Named holiday calendar with a source and supported date range (outside it the answer is unsupported), weekends-only (Saturday/Sunday only), or caller (only the holidays you list)."
},
"counting": {
"enum": [
"clear",
"elapsed"
],
"type": "string",
"description": "clear: days strictly between start and deadline, so the deadline is business day N+1. elapsed: the deadline is business day N after start (the end day is counted)."
},
"holidays": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
},
"maxItems": 400,
"description": "Extra non-business dates YYYY-MM-DD (company closures, a calendar we do not carry)."
},
"timeZone": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_+-]*(/[A-Za-z0-9_+-]+){0,2}$",
"maxLength": 64,
"description": "IANA zone for deadlineTime."
},
"direction": {
"enum": [
"after",
"before"
],
"type": "string",
"description": "Default after. before counts backward from start (for 'at least N days before the hearing')."
},
"deadlineTime": {
"type": "string",
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
"maxLength": 5,
"description": "Local HH:MM at which the deadline expires on the deadline date; needs timeZone to produce an instant."
},
"disambiguation": {
"enum": [
"earlier",
"later"
],
"type": "string",
"description": "How to read a deadline time that falls in a DST gap (earlier: before-gap offset reading backward; later: shifted forward) or overlap (earlier/later occurrence). Without it, a gap or overlap returns unknown with both candidates."
},
"claimedDeadline": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10,
"description": "A deadline date someone asserted; the check fails with the computed date if it differs."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"network",
"reasonCode",
"orderDetails",
"evidence"
],
"properties": {
"network": {
"enum": [
"visa",
"mastercard",
"amex",
"discover"
],
"type": "string"
},
"evidence": {
"type": "object",
"properties": {
"carrier": {
"type": "string",
"maxLength": 100
},
"deviceId": {
"type": "string",
"maxLength": 256
},
"avsResult": {
"type": "string",
"maxLength": 100
},
"cvvResult": {
"type": "string",
"maxLength": 100
},
"ipAddress": {
"type": "string",
"maxLength": 64
},
"deliveryDate": {
"type": "string",
"maxLength": 40
},
"refundIssued": {
"type": "string",
"maxLength": 500
},
"threeDSecure": {
"type": "string",
"maxLength": 200
},
"authorization": {
"type": "object",
"properties": {
"eci": {
"type": "string",
"pattern": "^0?[0-9]$",
"description": "Electronic Commerce Indicator, e.g. 05 or 5."
},
"approved": {
"type": "boolean"
},
"cavvPresent": {
"type": "boolean"
},
"cvv2ResultCode": {
"type": "string",
"pattern": "^[A-Za-z]$",
"description": "CVV2 result code in the authorization response, e.g. M, N, U."
},
"attemptResponse": {
"type": "boolean"
},
"cvv2PresenceIndicator": {
"type": "string",
"pattern": "^[0-9]$"
},
"authenticationConfirmed": {
"type": "boolean",
"description": "Issuer returned an Authentication Confirmation (Visa Secure / EMV 3DS)."
}
},
"description": "Authorization-message data from the processor; lets Visa 10.4 invalid disputes be decided without a model call.",
"additionalProperties": false
},
"trackingNumber": {
"type": "string",
"maxLength": 100
},
"digitalUsageLogs": {
"type": "string",
"maxLength": 10000
},
"customerAccountId": {
"type": "string",
"maxLength": 256
},
"deviceFingerprint": {
"type": "string",
"maxLength": 256
},
"cancellationPolicy": {
"type": "string",
"maxLength": 5000
},
"productDescription": {
"type": "string",
"maxLength": 5000
},
"refundPolicyExcerpt": {
"type": "string",
"maxLength": 5000
},
"deliveryConfirmation": {
"type": "string",
"maxLength": 2000
},
"signedProofOfDelivery": {
"type": "boolean"
},
"customerCommunications": {
"type": "string",
"maxLength": 20000
},
"priorUndisputedTransactions": {
"type": "array",
"items": {
"type": "object",
"required": [
"date"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}"
},
"amount": {
"type": "number",
"minimum": 0
},
"deviceId": {
"type": "string",
"maxLength": 256
},
"disputed": {
"type": "boolean"
},
"ipAddress": {
"type": "string",
"maxLength": 64
},
"description": {
"type": "string",
"maxLength": 1000,
"description": "What was purchased; CE3.0 requires a detailed description for each prior transaction."
},
"transactionId": {
"type": "string",
"maxLength": 100
},
"shippingAddress": {
"type": "string",
"maxLength": 500
},
"customerAccountId": {
"type": "string",
"maxLength": 256
},
"deviceFingerprint": {
"type": "string",
"maxLength": 256
}
},
"additionalProperties": false
},
"maxItems": 50
}
},
"additionalProperties": false
},
"reasonCode": {
"type": "string",
"pattern": "^[0-9A-Za-z.]{1,10}$",
"description": "e.g. 10.4, 13.1, 13.3 (Visa); 4837, 4853, 4855 (Mastercard)."
},
"disputeDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}"
},
"orderDetails": {
"type": "object",
"required": [
"orderId",
"amount",
"currency",
"transactionDate",
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"quantity",
"unitPrice"
],
"properties": {
"name": {
"type": "string",
"maxLength": 300
},
"quantity": {
"type": "integer",
"minimum": 1
},
"unitPrice": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 100,
"minItems": 1
},
"amount": {
"type": "number",
"maximum": 10000000,
"minimum": 0
},
"orderId": {
"type": "string",
"maxLength": 100
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$"
},
"productType": {
"enum": [
"physical",
"digital",
"service",
"subscription"
],
"type": "string"
},
"customerEmail": {
"type": "string",
"maxLength": 320
},
"billingAddress": {
"type": "string",
"maxLength": 500
},
"shippingAddress": {
"type": "string",
"maxLength": 500
},
"transactionDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}"
}
},
"additionalProperties": false
},
"disputeFeeUsd": {
"type": "number",
"maximum": 10000,
"minimum": 0,
"description": "Fee your processor charges to contest the dispute and does not return on a loss; used to net the expected value."
},
"responseDeadline": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}",
"description": "Deadline shown in your processor's dispute dashboard (YYYY-MM-DD); days remaining are computed from it."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"operation"
],
"properties": {
"key": {
"type": "object",
"required": [
"tonic"
],
"properties": {
"mode": {
"enum": [
"major",
"minor",
"harmonic-minor"
],
"type": "string",
"description": "Default major. minor is natural minor."
},
"tonic": {
"type": "string",
"maxLength": 3,
"description": "Key tonic, e.g. A or Eb."
}
},
"description": "For key-membership.",
"additionalProperties": false
},
"chord": {
"type": "string",
"maxLength": 24,
"description": "Chord symbol, root A-G with optional #/b, quality suffix, optional /bass: Cmaj7, F#m7b5, Bb/D."
},
"notes": {
"type": "array",
"items": {
"type": "string",
"maxLength": 6,
"description": "Note name such as C, Eb, F#, Bbb, C##, optionally with octave (C4). Bass is the lowest note when every note has an octave, else the first."
},
"maxItems": 8,
"minItems": 2,
"description": "For identify: 2 to 8 notes."
},
"prefer": {
"enum": [
"sharps",
"flats"
],
"type": "string",
"description": "Accidentals for a natural root when transposing. Default sharps; a root written with # or b keeps its kind."
},
"operation": {
"enum": [
"identify",
"spell",
"key-membership",
"transpose"
],
"type": "string"
},
"semitones": {
"type": "integer",
"maximum": 48,
"minimum": -48,
"description": "For transpose: semitones up (negative down)."
},
"expectChord": {
"type": "string",
"maxLength": 24,
"description": "Optional claimed chord symbol to verify (identify, transpose)."
},
"expectNotes": {
"type": "array",
"items": {
"type": "string",
"maxLength": 4,
"description": "A claimed note name."
},
"maxItems": 8,
"description": "Optional claimed notes in order, to verify (spell)."
}
},
"additionalProperties": false
}| include_parents |
| boolean |
| Look up GLEIF direct and ultimate parents. |
{
"type": "object",
"properties": {
"cik": {
"type": "integer",
"maximum": 9999999999,
"minimum": 1,
"description": "SEC Central Index Key."
},
"lei": {
"type": "string",
"maxLength": 20,
"minLength": 20,
"description": "20-character LEI; check digits are validated (ISO 17442)."
},
"vat": {
"type": "object",
"required": [
"country",
"number"
],
"properties": {
"number": {
"type": "string",
"maxLength": 24,
"minLength": 2,
"description": "VAT number without the country prefix."
},
"country": {
"enum": [
"AT",
"BE",
"BG",
"CY",
"CZ",
"DE",
"DK",
"EE",
"EL",
"ES",
"FI",
"FR",
"HR",
"HU",
"IE",
"IT",
"LT",
"LU",
"LV",
"MT",
"NL",
"PL",
"PT",
"RO",
"SE",
"SI",
"SK",
"XI"
],
"type": "string",
"description": "VIES country code (Greece is EL, Northern Ireland XI)."
}
},
"additionalProperties": false
},
"name": {
"type": "string",
"maxLength": 200,
"minLength": 2,
"description": "Company name, with or without legal form."
},
"domain": {
"type": "string",
"maxLength": 253,
"description": "Company web domain; only used to guess a name and to prefer matching candidates. It is never fetched."
},
"ticker": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Stock ticker, matched case-insensitively against the SEC table."
},
"country": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "ISO 3166-1 alpha-2 hint; raises the score of candidates registered in that country."
},
"max_candidates": {
"type": "integer",
"default": 5,
"maximum": 10,
"minimum": 1,
"description": "How many ranked candidates to return."
},
"include_parents": {
"type": "boolean",
"default": true,
"description": "Look up GLEIF direct and ultimate parents."
}
},
"additionalProperties": false
}| string |
| userJurisdiction* | string | e.g. California, New York, EU (Germany), UK. |
| accountIdentifier | string |
| contractStartDate | string |
| earlyTerminationFeeUsd | number | Early-termination fee the vendor says you owe, USD, if any. |
{
"type": "object",
"required": [
"vendorName",
"userJurisdiction",
"reasonForExit"
],
"properties": {
"termsUrl": {
"type": "string",
"maxLength": 2048,
"description": "Terms of Service or cancellation policy URL. Provide termsUrl or contractText."
},
"annualFee": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "What you pay per year, USD, if billed annually. Use monthlyFee or annualFee."
},
"monthlyFee": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "What you pay per month, USD. Used to compute the dollars at stake."
},
"vendorName": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"contractText": {
"type": "string",
"maxLength": 200000
},
"customerName": {
"type": "string",
"maxLength": 200
},
"customerType": {
"enum": [
"consumer",
"business"
],
"type": "string"
},
"signupMethod": {
"enum": [
"online",
"phone",
"in_person"
],
"type": "string"
},
"reasonForExit": {
"type": "string",
"maxLength": 2000,
"minLength": 1
},
"userJurisdiction": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"description": "e.g. California, New York, EU (Germany), UK."
},
"accountIdentifier": {
"type": "string",
"maxLength": 200
},
"contractStartDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"earlyTerminationFeeUsd": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Early-termination fee the vendor says you owe, USD, if any."
}
},
"additionalProperties": false
}| string |
| led-resistor (default E24) and e-series: preferred-value series. |
| tcrPpm | number | colour-encode with 6 bands: temperature coefficient in ppm/K. |
| areaMm2 | number | line-drop: conductor cross-section in mm^2. |
| current | number | ohm, led-resistor, line-drop: amperes. |
| lengthM | number | line-drop: one-way length in metres. |
| voltage | number | ohm: volts. |
| bandCount | integer | colour-encode: 3, 4 (default), 5 or 6 bands. 5 and 6 bands carry three digits. |
| roundTrip | boolean | line-drop: count out and return conductors (default true). |
| resistance | number | ohm: ohms. colour-encode and e-series: the value in ohms. |
| resistances | array | series/parallel: ohms, at most 100. |
| tolerancePct | number | series/parallel: shared tolerance percent for min/max bounds. colour-encode: tolerance percent to encode. |
| supplyVoltage | number | led-resistor: supply volts. line-drop: optional, enables dropPercent. |
| forwardVoltage | number | led-resistor: LED forward volts. |
| maxDropPercent | number | line-drop: fail when the drop exceeds this percent of supplyVoltage. |
| resistivityOhmM | number | line-drop: conductor resistivity in ohm-metres, supplied by the caller (not looked up). |
| claimTolerancePct | number | Relative tolerance for claim values, percent (default 0: exact). |
{
"type": "object",
"required": [
"op"
],
"properties": {
"op": {
"enum": [
"ohm",
"series",
"parallel",
"divider",
"led-resistor",
"line-drop",
"colour-decode",
"colour-encode",
"e-series"
],
"type": "string",
"description": "ohm | series | parallel | divider | led-resistor | line-drop | colour-decode | colour-encode | e-series."
},
"r1": {
"type": "number",
"maximum": 1000000000000000,
"minimum": -1000000000000000,
"description": "divider: top resistor, ohms."
},
"r2": {
"type": "number",
"maximum": 1000000000000000,
"minimum": -1000000000000000,
"description": "divider: bottom resistor, ohms."
},
"vin": {
"type": "number",
"maximum": 1000000000000000,
"minimum": -1000000000000000,
"description": "divider: input volts."
},
"bands": {
"type": "array",
"items": {
"type": "string",
"maxLength": 12,
"description": "Colour name, head end first (IEC 60062 table)."
},
"maxItems": 6,
"minItems": 3,
"description": "colour-decode: 3 to 6 colours read from the head end."
},
"claim": {
"type": "object",
"description": "Optional map from an output value name (e.g. resistance, vout, minResistance) to the number you expect."
},
"power": {
"type": "number",
"maximum": 1000000000000000,
"minimum": -1000000000000000,
"description": "ohm: watts."
},
"rLoad": {
"type": "number",
"maximum": 1000000000000000,
"minimum": -1000000000000000,
"description": "divider: optional load across r2, ohms."
},
"series": {
"enum": [
"E3",
"E6",
"E12",
"E24",
"E48",
"E96",
"E192"
],
"type": "string",
"description": "led-resistor (default E24) and e-series: preferred-value series."
},
"tcrPpm": {
"type": "number",
"maximum": 1000,
"minimum": 0,
"description": "colour-encode with 6 bands: temperature coefficient in ppm/K."
},
"areaMm2": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0,
"description": "line-drop: conductor cross-section in mm^2."
},
"current": {
"type": "number",
"maximum": 1000000000000000,
"minimum": -1000000000000000,
"description": "ohm, led-resistor, line-drop: amperes."
},
"lengthM": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0,
"description": "line-drop: one-way length in metres."
},
"voltage": {
"type": "number",
"maximum": 1000000000000000,
"minimum": -1000000000000000,
"description": "ohm: volts."
},
"bandCount": {
"type": "integer",
"maximum": 6,
"minimum": 3,
"description": "colour-encode: 3, 4 (default), 5 or 6 bands. 5 and 6 bands carry three digits."
},
"roundTrip": {
"type": "boolean",
"description": "line-drop: count out and return conductors (default true)."
},
"resistance": {
"type": "number",
"maximum": 1000000000000000,
"minimum": -1000000000000000,
"description": "ohm: ohms. colour-encode and e-series: the value in ohms."
},
"resistances": {
"type": "array",
"items": {
"type": "number",
"maximum": 1000000000000000,
"minimum": -1000000000000000,
"description": "number"
},
"maxItems": 100,
"description": "series/parallel: ohms, at most 100."
},
"tolerancePct": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "series/parallel: shared tolerance percent for min/max bounds. colour-encode: tolerance percent to encode."
},
"supplyVoltage": {
"type": "number",
"maximum": 1000000000000000,
"minimum": -1000000000000000,
"description": "led-resistor: supply volts. line-drop: optional, enables dropPercent."
},
"forwardVoltage": {
"type": "number",
"maximum": 1000000000000000,
"minimum": -1000000000000000,
"description": "led-resistor: LED forward volts."
},
"maxDropPercent": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "line-drop: fail when the drop exceeds this percent of supplyVoltage."
},
"resistivityOhmM": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "line-drop: conductor resistivity in ohm-metres, supplied by the caller (not looked up)."
},
"claimTolerancePct": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Relative tolerance for claim values, percent (default 0: exact)."
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"cik": {
"type": "string",
"pattern": "^[0-9]{1,10}$",
"maxLength": 10,
"minLength": 1,
"description": "SEC CIK, digits only."
},
"checks": {
"type": "array",
"items": {
"enum": [
"balance_identity",
"net_income_tie_out",
"cash_tie_out",
"eps_recomputation",
"restatement_scan",
"calculation_footing"
],
"type": "string"
},
"maxItems": 6,
"minItems": 1,
"description": "Checks to run; default all six."
},
"period": {
"enum": [
"FY",
"Q1",
"Q2",
"Q3"
],
"type": "string",
"description": "FY selects the 10-K; Q1 to Q3 select 10-Qs (there is no Q4 filing)."
},
"ticker": {
"type": "string",
"maxLength": 12,
"minLength": 1,
"description": "Exchange ticker, e.g. AAPL or BRK.B. Give exactly one of ticker or cik."
},
"accession": {
"type": "string",
"maxLength": 20,
"minLength": 18,
"description": "Accession number of a 10-K or 10-Q, e.g. 0000320193-25-000079. Give this or fiscal_year with period."
},
"fiscal_year": {
"type": "integer",
"maximum": 2100,
"minimum": 2009,
"description": "Fiscal year of the filing's DocumentFiscalYearFocus."
},
"rounding_mode": {
"enum": [
"exact",
"reported_precision"
],
"type": "string",
"description": "exact: any nonzero difference fails. reported_precision (default): differences within half a unit of the filing's reporting scale per rounded figure pass and are flagged."
}
},
"additionalProperties": false
}| integer |
| month-aligned: month in which the fiscal year starts, on day 1. |
{
"type": "object",
"required": [
"type",
"yearLabel",
"items"
],
"properties": {
"type": {
"enum": [
"month-aligned",
"52-53-week"
],
"type": "string"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"date"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
},
"claimedPeriod": {
"type": "integer",
"maximum": 12,
"minimum": 1
},
"claimedQuarter": {
"type": "integer",
"maximum": 4,
"minimum": 1
},
"claimedFiscalYear": {
"type": "integer",
"maximum": 3000,
"minimum": 1000
}
}
},
"maxItems": 100,
"minItems": 1
},
"endRule": {
"enum": [
"last",
"closest"
],
"type": "string",
"description": "52-53-week: last endWeekday in endMonth, or the endWeekday closest to endMonth's last day."
},
"pattern": {
"enum": [
"4-4-5",
"4-5-4",
"5-4-4"
],
"type": "string",
"description": "52-53-week: weeks per period within each quarter."
},
"endMonth": {
"type": "integer",
"maximum": 12,
"minimum": 1,
"description": "52-53-week: month near whose end the year ends."
},
"yearLabel": {
"enum": [
"start",
"end"
],
"type": "string",
"description": "start: the fiscal year is named for the calendar year it begins in. end: for the calendar year it ends in (US federal FY2027 begins 2026-10-01)."
},
"endWeekday": {
"type": "integer",
"maximum": 6,
"minimum": 0,
"description": "52-53-week: weekday the year ends on, 0=Sunday."
},
"startMonth": {
"type": "integer",
"maximum": 12,
"minimum": 1,
"description": "month-aligned: month in which the fiscal year starts, on day 1."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"lines"
],
"properties": {
"lines": {
"type": "array",
"items": {
"type": "object",
"required": [
"quantity",
"unitPrice",
"amount"
],
"properties": {
"id": {
"type": "string",
"maxLength": 80
},
"amount": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Stated net line amount after the line discount."
},
"taxRate": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Tax rate in percent, e.g. \"7.5\". With taxAmount it is checked. A non-zero rate without taxAmount cannot be checked: the result is unknown, and no tax is inferred."
},
"discount": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Line discount as a positive amount in major units."
},
"quantity": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
},
"taxAmount": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Tax on this line as supplied."
},
"unitPrice": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Price per unit in major units; sub-cent precision allowed."
}
},
"additionalProperties": false
},
"maxItems": 500,
"minItems": 1
},
"stated": {
"type": "object",
"properties": {
"total": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Grand total; checked against subtotal + taxTotal."
},
"subtotal": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
},
"taxTotal": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
},
"discountTotal": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Sum of line discounts."
}
},
"additionalProperties": false
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "ISO 4217 alphabetic code, upper case."
},
"exponent": {
"type": "integer",
"maximum": 8,
"minimum": 0
},
"rounding": {
"enum": [
"half-up",
"half-down",
"half-even",
"up",
"down",
"ceiling",
"floor"
],
"type": "string",
"description": "Default half-up. half-up: ties away from zero. half-down: ties toward zero. half-even: ties to the even neighbour. up: away from zero. down: toward zero. ceiling: toward +infinity. floor: toward -infinity."
},
"taxRounding": {
"enum": [
"line",
"invoice"
],
"type": "string",
"description": "line (default): each line's tax is rounded on its own. invoice: tax is rounded once per distinct rate on the sum of the line amounts, and compared with the supplied tax sum for that rate."
},
"toleranceMinor": {
"type": "integer",
"maximum": 1000,
"minimum": 0,
"description": "Largest absolute drift in minor units still treated as a match. Default 0."
}
},
"additionalProperties": false
}| If set, lots elsewhere (or without a location) are excluded. |
| minShelfLifeDays | integer | Exclude lots with fewer than this many days left at asOf (needs expiry on every non-held lot). |
{
"type": "object",
"required": [
"asOf",
"demand",
"policy",
"lots"
],
"properties": {
"asOf": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10,
"description": "Reference date, YYYY-MM-DD. An expiry date is the last usable day: a lot expiring on asOf has 0 days left."
},
"lots": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"qty"
],
"properties": {
"id": {
"type": "string",
"maxLength": 64,
"description": "Lot id (unique)."
},
"qty": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Units on hand."
},
"hold": {
"type": "boolean",
"description": "Quality or admin hold: never picked."
},
"expiry": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10,
"description": "Last usable day, YYYY-MM-DD."
},
"location": {
"type": "string",
"maxLength": 64,
"description": "Location label."
},
"received": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10,
"description": "Date received, YYYY-MM-DD."
}
}
},
"maxItems": 200,
"minItems": 1,
"description": "At most 200."
},
"demand": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Units wanted (whole units)."
},
"policy": {
"enum": [
"FIFO",
"FEFO",
"LIFO",
"MIN_LOTS"
],
"type": "string",
"description": "FIFO: oldest received first. FEFO: earliest expiry first. LIFO: newest received first. MIN_LOTS: fewest lots (largest usable first; ties by earlier expiry, then id)."
},
"pickMultiple": {
"type": "integer",
"maximum": 1000000,
"minimum": 1,
"description": "Each lot contributes whole multiples of this case size (default 1)."
},
"allowOverpick": {
"type": "boolean",
"description": "With pickMultiple, allow the last pick to round the total up to a whole case (default false: leave the remainder as shortfall)."
},
"allowedLocations": {
"type": "array",
"items": {
"type": "string",
"maxLength": 64,
"description": "Location label."
},
"maxItems": 50,
"description": "If set, lots elsewhere (or without a location) are excluded."
},
"minShelfLifeDays": {
"type": "integer",
"maximum": 36500,
"minimum": 0,
"description": "Exclude lots with fewer than this many days left at asOf (needs expiry on every non-held lot)."
}
},
"additionalProperties": false
}| venue caller only. |
| earlyCloses | array | venue caller only. |
{
"type": "object",
"required": [
"venue",
"instants"
],
"properties": {
"open": {
"type": "string",
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
"maxLength": 5,
"description": "venue caller only, local HH:MM."
},
"close": {
"type": "string",
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
"maxLength": 5,
"description": "venue caller only, local HH:MM, after open."
},
"venue": {
"enum": [
"nyse",
"caller"
],
"type": "string"
},
"expect": {
"enum": [
"open",
"closed"
],
"type": "string",
"description": "If given, status is fail for any instant whose state differs."
},
"weekend": {
"type": "array",
"items": {
"type": "integer",
"maximum": 6,
"minimum": 0
},
"maxItems": 6,
"description": "Non-business weekdays, 0=Sunday..6=Saturday. Default [0, 6]; use [5, 6] for a Friday/Saturday weekend."
},
"holidays": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
},
"maxItems": 400,
"description": "Extra non-business dates YYYY-MM-DD (company closures, a calendar we do not carry)."
},
"instants": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|z|[+-]\\d{2}:?\\d{2})$",
"maxLength": 36
},
"maxItems": 50,
"minItems": 1,
"description": "RFC 3339 timestamps with Z or offset."
},
"timeZone": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_+-]*(/[A-Za-z0-9_+-]+){0,2}$",
"maxLength": 64,
"description": "venue caller only."
},
"earlyCloses": {
"type": "array",
"items": {
"type": "object",
"required": [
"date",
"close"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
},
"close": {
"type": "string",
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
"maxLength": 5
}
}
},
"maxItems": 100,
"description": "venue caller only."
}
},
"additionalProperties": false
}| string |
| visitSummary | string | What actually happened: symptoms, duration, tests, treatment. |
| accountNumber | string |
| billReceivedDate | string | Date the initial bill was received; used for the 120-day dispute deadline. |
| goodFaithEstimateAmount | number | Good Faith Estimate received (self-pay). |
{
"type": "object",
"required": [
"facilityType"
],
"properties": {
"billText": {
"type": "string",
"maxLength": 30000,
"minLength": 10,
"description": "Alternative to lineItems: paste the itemized bill, one line item per line, e.g. \"99285 EMERGENCY DEPT VISIT LVL 5 1 $3,250.00\". Lines with a CPT/HCPCS code and a dollar amount are read in code; send exactly one of lineItems or billText."
},
"coverage": {
"enum": [
"uninsured_self_pay",
"in_network",
"out_of_network",
"medicare",
"medicaid",
"unknown"
],
"type": "string",
"description": "Determines which No Surprises Act protections can apply."
},
"claimType": {
"enum": [
"professional",
"facility"
],
"type": "string",
"description": "Physician (CMS-1500) or hospital/facility (UB-04) bill. Medicare physician fee schedule benchmarks apply only to professional claims."
},
"lineItems": {
"type": "array",
"items": {
"type": "object",
"required": [
"cptOrHcpcsCode",
"description",
"chargedAmount",
"units"
],
"properties": {
"units": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"modifiers": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9]{2}$"
},
"maxItems": 4
},
"description": {
"type": "string",
"maxLength": 500
},
"revenueCode": {
"type": "string",
"pattern": "^\\d{3,4}$"
},
"serviceDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"chargedAmount": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "Total billed for this line, USD."
},
"cptOrHcpcsCode": {
"type": "string",
"pattern": "^[A-Za-z0-9]{5}$",
"description": "5-character CPT or HCPCS Level II code."
}
},
"additionalProperties": false
},
"maxItems": 200,
"minItems": 1
},
"patientName": {
"type": "string",
"maxLength": 200
},
"facilityName": {
"type": "string",
"maxLength": 200
},
"facilityType": {
"enum": [
"emergency_room",
"urgent_care",
"outpatient_hospital",
"inpatient_hospital",
"ambulatory_surgery_center",
"physician_office",
"laboratory",
"imaging_center",
"other"
],
"type": "string"
},
"patientState": {
"type": "string",
"pattern": "^[A-Za-z]{2}$"
},
"visitSummary": {
"type": "string",
"maxLength": 4000,
"description": "What actually happened: symptoms, duration, tests, treatment."
},
"accountNumber": {
"type": "string",
"maxLength": 100
},
"billReceivedDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date the initial bill was received; used for the 120-day dispute deadline."
},
"goodFaithEstimateAmount": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "Good Faith Estimate received (self-pay)."
}
},
"additionalProperties": false
}| rounding | string | Final rounding to the minor unit. Default half-up. half-up: ties away from zero. half-down: ties toward zero. half-even: ties to the even neighbour. up: away from zero. down: toward zero. ceiling: toward +infinity. floor: toward -infinity. |
| packageRounding | string | How a partial package is billed when per > 1. Default up. |
{
"type": "object",
"required": [
"quantity",
"mode",
"tiers"
],
"properties": {
"per": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Units per billing package (default 1). Tiers are expressed in packages."
},
"mode": {
"enum": [
"graduated",
"volume"
],
"type": "string"
},
"tiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"unitPrice"
],
"properties": {
"upTo": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Inclusive upper bound in billing units. Omit on the last tier for unlimited."
},
"flatFee": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Fee in major units charged with this tier."
},
"unitPrice": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Price per billing unit in major units; sub-cent precision allowed."
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"minimum": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Minimum charge in major units, applied after the tiers."
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "ISO 4217 alphabetic code, upper case."
},
"exponent": {
"type": "integer",
"maximum": 8,
"minimum": 0
},
"included": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Free quantity subtracted before packaging and tiers (never below zero)."
},
"quantity": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
},
"rounding": {
"enum": [
"half-up",
"half-down",
"half-even",
"up",
"down",
"ceiling",
"floor"
],
"type": "string",
"description": "Final rounding to the minor unit. Default half-up. half-up: ties away from zero. half-down: ties toward zero. half-even: ties to the even neighbour. up: away from zero. down: toward zero. ceiling: toward +infinity. floor: toward -infinity."
},
"packageRounding": {
"enum": [
"up",
"down",
"none"
],
"type": "string",
"description": "How a partial package is billed when per > 1. Default up."
}
},
"additionalProperties": false
}| string |
| Optional stated total of `after` to verify. |
| statedBeforeTotal | string | Optional stated total of `before` (reporting currency) to verify. |
{
"type": "object",
"required": [
"before",
"after"
],
"properties": {
"fx": {
"type": "object",
"required": [
"before",
"after"
],
"properties": {
"after": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
},
"before": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
}
},
"description": "Multiplier from line currency to reporting currency, before and after. Default 1 and 1.",
"additionalProperties": false
},
"after": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"quantity",
"unitPrice"
],
"properties": {
"key": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"quantity": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
},
"unitPrice": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
}
},
"additionalProperties": false
},
"maxItems": 300,
"minItems": 0
},
"order": {
"type": "array",
"items": {
"enum": [
"quantity",
"price",
"fx"
],
"type": "string"
},
"maxItems": 3,
"minItems": 1,
"description": "Substitution order of the factors; each at most once. Default [quantity, price, fx]."
},
"before": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"quantity",
"unitPrice"
],
"properties": {
"key": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"quantity": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
},
"unitPrice": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Decimal string such as \"-12.50\" (up to 15 integer and 12 fraction digits). JSON numbers are not accepted: they are binary floats."
}
},
"additionalProperties": false
},
"maxItems": 300,
"minItems": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "ISO 4217 alphabetic code, upper case."
},
"exponent": {
"type": "integer",
"maximum": 8,
"minimum": 0
},
"rounding": {
"enum": [
"half-up",
"half-down",
"half-even",
"up",
"down",
"ceiling",
"floor"
],
"type": "string",
"description": "Default half-even. half-up: ties away from zero. half-down: ties toward zero. half-even: ties to the even neighbour. up: away from zero. down: toward zero. ceiling: toward +infinity. floor: toward -infinity."
},
"statedAfterTotal": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Optional stated total of `after` to verify."
},
"statedBeforeTotal": {
"type": "string",
"pattern": "^-?\\d{1,15}(\\.\\d{1,12})?$",
"maxLength": 30,
"description": "Optional stated total of `before` (reporting currency) to verify."
}
},
"additionalProperties": false
}| printHeight |
| number |
| Trim height in unit. |
| ppiTolerance | number | Accepted ppi difference for claimedEffectivePpi (default 0.5). |
| bitsPerChannel | integer | Bits per channel (default 8). |
| claimedRawBytes | integer | An uncompressed byte count you assert. |
| claimedEffectivePpi | number | An effective ppi you assert; checked against the computed value. |
{
"type": "object",
"required": [
"widthPx",
"heightPx"
],
"properties": {
"unit": {
"enum": [
"in",
"mm",
"cm"
],
"type": "string",
"description": "Unit for print size, bleed and margin (default in)."
},
"bleed": {
"type": "number",
"maximum": 10000,
"minimum": 0,
"description": "Bleed added on each side of the trim, in unit (default 0)."
},
"margin": {
"type": "number",
"maximum": 10000,
"minimum": 0,
"description": "Safe margin inside the trim on each side, in unit (default 0)."
},
"widthPx": {
"type": "integer",
"maximum": 1000000,
"minimum": 1,
"description": "Image width in pixels."
},
"channels": {
"type": "integer",
"maximum": 8,
"minimum": 1,
"description": "Channels per pixel for the raw size (default 3)."
},
"heightPx": {
"type": "integer",
"maximum": 1000000,
"minimum": 1,
"description": "Image height in pixels."
},
"targetPpi": {
"type": "number",
"maximum": 100000,
"minimum": 1,
"description": "The resolution you require, in pixels per inch."
},
"printWidth": {
"type": "number",
"maximum": 100000,
"minimum": 0.001,
"description": "Trim width in unit."
},
"printHeight": {
"type": "number",
"maximum": 100000,
"minimum": 0.001,
"description": "Trim height in unit."
},
"ppiTolerance": {
"type": "number",
"maximum": 1000,
"minimum": 0,
"description": "Accepted ppi difference for claimedEffectivePpi (default 0.5)."
},
"bitsPerChannel": {
"enum": [
1,
8,
16,
32
],
"type": "integer",
"description": "Bits per channel (default 8)."
},
"claimedRawBytes": {
"type": "integer",
"maximum": 9000000000000000,
"minimum": 0,
"description": "An uncompressed byte count you assert."
},
"claimedEffectivePpi": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "An effective ppi you assert; checked against the computed value."
}
},
"additionalProperties": false
}| conventions |
| object |
| Restrict the conventions searched (default: all rounding modes x both scopes x both FX date policies). |
| settlements | array | Payouts or bank settlement totals to explain. |
| feeSchedules | array | Candidate fee schedules; the solver reports which one reconciles each settlement. Omit for no fees. |
| withholdings | array |
| toleranceMinor | integer | Accepted |residual| per settlement in minor units (default 0 = exact). |
| defaultCurrency | string | Currency for text rows that state none. |
| nearMissToleranceMinor | integer | Largest residual searched when reporting the closest near-miss for an unmatched settlement. |
{
"type": "object",
"properties": {
"text": {
"type": "object",
"properties": {
"items": {
"type": "string",
"maxLength": 30000
},
"terms": {
"type": "string",
"maxLength": 30000,
"description": "Fee schedules, tax/withholding rates and FX rates in prose or tables."
},
"settlements": {
"type": "string",
"maxLength": 30000
},
"amountColumn": {
"type": "string",
"maxLength": 100,
"description": "CSV header to read amounts from, e.g. \"net\" for a Stripe or PayPal export whose payout is the sum of net amounts. Default: the first amount-like column (Amount, then Gross)."
}
},
"description": "Messy source text for collections not given structurally. A CSV with a header (Stripe balance or payout-reconciliation export, PayPal activity export, bank statement) is parsed by code with no model, and so are headerless lines with one amount each (date, id, amount, currency, and wording that names one kind, such as Payment or Refund); anything else goes to a fast-tier LLM that must quote every row verbatim.",
"additionalProperties": false
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"amount",
"currency"
],
"properties": {
"id": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"date": {
"type": "string",
"maxLength": 40,
"minLength": 10,
"description": "ISO date YYYY-MM-DD (a time suffix is ignored)."
},
"kind": {
"enum": [
"charge",
"invoice",
"refund",
"dispute",
"fee",
"adjustment",
"other"
],
"type": "string"
},
"group": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Lines sharing a group (an invoice) are settled together or not at all."
},
"amount": {
"anyOf": [
{
"type": "string",
"maxLength": 40,
"minLength": 1
},
{
"type": "number"
}
],
"description": "Decimal string; locale formats (1.234,56, (12.00)) are accepted and parsed exactly."
},
"currency": {
"type": "string",
"maxLength": 3,
"minLength": 3,
"description": "ISO 4217 currency code."
}
},
"additionalProperties": false
},
"maxItems": 2000,
"description": "Ledger lines. Amounts are signed (refunds and disputes negative) strings in major units, e.g. \"1234.56\"."
},
"limits": {
"type": "object",
"properties": {
"maxNodes": {
"type": "integer",
"maximum": 20000000,
"minimum": 1000
},
"maxMillis": {
"type": "integer",
"maximum": 25000,
"minimum": 100
},
"maxSolutions": {
"type": "integer",
"maximum": 100,
"minimum": 2
}
},
"additionalProperties": false
},
"fxRates": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"to",
"rate"
],
"properties": {
"to": {
"type": "string",
"maxLength": 3,
"minLength": 3,
"description": "ISO 4217 currency code."
},
"date": {
"type": "string",
"maxLength": 40,
"minLength": 10,
"description": "ISO date YYYY-MM-DD (a time suffix is ignored)."
},
"from": {
"type": "string",
"maxLength": 3,
"minLength": 3,
"description": "ISO 4217 currency code."
},
"rate": {
"anyOf": [
{
"type": "string",
"maxLength": 40,
"minLength": 1
},
{
"type": "number"
}
]
}
},
"additionalProperties": false
},
"maxItems": 500,
"description": "Direct rates only (1 from = rate to). The latest rate dated on or before the reference date applies; an undated rate is the fallback."
},
"crossCheck": {
"type": "boolean",
"description": "Run two independent LLM translations and keep only rows both produced (default true)."
},
"maxLagDays": {
"type": "integer",
"maximum": 3650,
"minimum": 0,
"description": "An item may settle at most this many days after its date."
},
"conventions": {
"type": "object",
"properties": {
"scope": {
"type": "array",
"items": {
"enum": [
"line",
"total_net"
],
"type": "string"
},
"maxItems": 2,
"minItems": 1
},
"fxPolicy": {
"type": "array",
"items": {
"enum": [
"item_date",
"settlement_date"
],
"type": "string"
},
"maxItems": 2,
"minItems": 1
},
"rounding": {
"type": "array",
"items": {
"enum": [
"half_up",
"half_even",
"truncate"
],
"type": "string"
},
"maxItems": 3,
"minItems": 1
}
},
"description": "Restrict the conventions searched (default: all rounding modes x both scopes x both FX date policies).",
"additionalProperties": false
},
"settlements": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"amount",
"currency"
],
"properties": {
"id": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"date": {
"type": "string",
"maxLength": 40,
"minLength": 10,
"description": "ISO date YYYY-MM-DD (a time suffix is ignored)."
},
"amount": {
"anyOf": [
{
"type": "string",
"maxLength": 40,
"minLength": 1
},
{
"type": "number"
}
]
},
"itemIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"maxItems": 2000,
"description": "Restrict the candidate items for this settlement."
},
"currency": {
"type": "string",
"maxLength": 3,
"minLength": 3,
"description": "ISO 4217 currency code."
},
"feeScheduleIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"maxItems": 20,
"description": "Restrict the fee schedules tried for this settlement (e.g. its processor)."
},
"withholdingIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"maxItems": 20,
"description": "Require one of these withholdings; omit to also try none."
}
},
"additionalProperties": false
},
"maxItems": 200,
"description": "Payouts or bank settlement totals to explain."
},
"feeSchedules": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"rules"
],
"properties": {
"id": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"rules": {
"type": "array",
"items": {
"type": "object",
"properties": {
"max": {
"anyOf": [
{
"type": "string",
"maxLength": 40,
"minLength": 1
},
{
"type": "number"
}
]
},
"min": {
"anyOf": [
{
"type": "string",
"maxLength": 40,
"minLength": 1
},
{
"type": "number"
}
]
},
"fixed": {
"anyOf": [
{
"type": "string",
"maxLength": 40,
"minLength": 1
},
{
"type": "number"
}
],
"description": "Fixed fee per item in the item's currency."
},
"kinds": {
"type": "array",
"items": {
"enum": [
"charge",
"invoice",
"refund",
"dispute",
"fee",
"adjustment",
"other"
],
"type": "string"
},
"maxItems": 7
},
"tiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"percent"
],
"properties": {
"upTo": {
"anyOf": [
{
"type": "string",
"maxLength": 40,
"minLength": 1
},
{
"type": "number"
}
]
},
"percent": {
"anyOf": [
{
"type": "string",
"maxLength": 40,
"minLength": 1
},
{
"type": "number"
}
]
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "Percentage bands on |amount|; amounts above the last upTo use the last band's percent."
},
"percent": {
"anyOf": [
{
"type": "string",
"maxLength": 40,
"minLength": 1
},
{
"type": "number"
}
],
"description": "Percentage, e.g. 2.9 for 2.9%."
},
"tierMode": {
"enum": [
"marginal",
"threshold"
],
"type": "string",
"description": "marginal: each band charged at its own percent; threshold: the band containing the amount applies to all of it."
},
"currencies": {
"type": "array",
"items": {
"type": "string",
"maxLength": 3,
"minLength": 3,
"description": "ISO 4217 currency code."
},
"maxItems": 40
},
"fixedByCurrency": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"amount": {
"anyOf": [
{
"type": "string",
"maxLength": 40,
"minLength": 1
},
{
"type": "number"
}
]
},
"currency": {
"type": "string",
"maxLength": 3,
"minLength": 3,
"description": "ISO 4217 currency code."
}
},
"additionalProperties": false
},
"maxItems": 40,
"description": "Per-currency fixed fee; overrides fixed."
}
},
"description": "First rule whose kinds (default charge, invoice) and currencies match an item sets its fee: percent (or tiers) of |amount| plus a fixed amount, clamped to min and max, signed like the item.",
"additionalProperties": false
},
"maxItems": 20
},
"source": {
"type": "string",
"maxLength": 500
},
"description": {
"type": "string",
"maxLength": 300
},
"fxMarkupPercent": {
"anyOf": [
{
"type": "string",
"maxLength": 40,
"minLength": 1
},
{
"type": "number"
}
],
"description": "Spread applied to FX conversions: effective rate = rate x (1 - markup/100)."
},
"fixedPerSettlement": {
"anyOf": [
{
"type": "string",
"maxLength": 40,
"minLength": 1
},
{
"type": "number"
}
],
"description": "Fixed fee deducted once per settlement, in the settlement currency (rounded to its minor unit)."
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "Candidate fee schedules; the solver reports which one reconciles each settlement. Omit for no fees."
},
"withholdings": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"ratePercent"
],
"properties": {
"id": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"base": {
"enum": [
"gross",
"net_of_fee"
],
"type": "string"
},
"kinds": {
"type": "array",
"items": {
"enum": [
"charge",
"invoice",
"refund",
"dispute",
"fee",
"adjustment",
"other"
],
"type": "string"
},
"maxItems": 7
},
"ratePercent": {
"anyOf": [
{
"type": "string",
"maxLength": 40,
"minLength": 1
},
{
"type": "number"
}
]
}
},
"additionalProperties": false
},
"maxItems": 20
},
"toleranceMinor": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Accepted |residual| per settlement in minor units (default 0 = exact)."
},
"defaultCurrency": {
"type": "string",
"maxLength": 3,
"minLength": 3,
"description": "Currency for text rows that state none."
},
"nearMissToleranceMinor": {
"type": "integer",
"maximum": 1000000000,
"minimum": 1,
"description": "Largest residual searched when reporting the closest near-miss for an unmatched settlement."
}
},
"additionalProperties": false
}| exdates | array | Extra excluded local date-times (YYYY-MM-DDTHH:MM[:SS]) or dates (YYYY-MM-DD, excludes that day). |
| timeZone | string | IANA zone for local times (required for cron; for rrule unless DTSTART has TZID or Z). |
| blackouts | array | Inclusive local date ranges to drop (holidays, freezes). |
| durationMinutes | integer | Occurrence length, for conflict overlap. |
{
"type": "object",
"required": [
"kind",
"rule"
],
"properties": {
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?$",
"maxLength": 30,
"description": "Local end of the window, inclusive."
},
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?$",
"maxLength": 30,
"description": "Local start of the output window; required for cron, default DTSTART for rrule."
},
"kind": {
"enum": [
"rrule",
"cron"
],
"type": "string"
},
"rule": {
"type": "string",
"maxLength": 800,
"description": "rrule: 'DTSTART;TZID=America/New_York:19970902T090000\\nRRULE:FREQ=DAILY;COUNT=10\\nEXDATE;TZID=America/New_York:19970903T090000' or just 'FREQ=...' with dtstart. cron: '*/15 9-17 * * 1-5' (dom and dow both restricted match if either does)."
},
"limit": {
"type": "integer",
"maximum": 366,
"minimum": 1,
"description": "Maximum occurrences returned (default 20)."
},
"other": {
"type": "object",
"required": [
"kind",
"rule"
],
"properties": {
"kind": {
"enum": [
"rrule",
"cron"
],
"type": "string"
},
"rule": {
"type": "string",
"maxLength": 800
},
"dtstart": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?$",
"maxLength": 30
},
"timeZone": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_+-]*(/[A-Za-z0-9_+-]+){0,2}$",
"maxLength": 64
},
"durationMinutes": {
"type": "integer",
"maximum": 43200,
"minimum": 0
}
},
"description": "A second rule to compare; conflicts are occurrences whose intervals overlap (equal instants when both durations are 0)."
},
"dtstart": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}[Tt ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?$",
"maxLength": 30,
"description": "Local DTSTART when the rule text has none."
},
"exdates": {
"type": "array",
"items": {
"type": "string",
"maxLength": 30
},
"maxItems": 200,
"description": "Extra excluded local date-times (YYYY-MM-DDTHH:MM[:SS]) or dates (YYYY-MM-DD, excludes that day)."
},
"timeZone": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_+-]*(/[A-Za-z0-9_+-]+){0,2}$",
"maxLength": 64,
"description": "IANA zone for local times (required for cron; for rrule unless DTSTART has TZID or Z)."
},
"blackouts": {
"type": "array",
"items": {
"type": "object",
"required": [
"start",
"end"
],
"properties": {
"end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
},
"start": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
}
}
},
"maxItems": 50,
"description": "Inclusive local date ranges to drop (holidays, freezes)."
},
"durationMinutes": {
"type": "integer",
"maximum": 43200,
"minimum": 0,
"description": "Occurrence length, for conflict overlap."
}
},
"additionalProperties": false
}| include | array | Categories to add to the level preset. |
| useModel | boolean | Add a language-model pass for names, organizations and addresses (when those categories are on). Sends the text, up to 60000 characters, to the configured model provider. Default false. |
| categories | array | Exact set of categories to redact; replaces the level preset when given. |
| minDigitRun | integer | Also redact every run of at least this many digits (spaces, dots and hyphens between digits count as part of the run). This is the number of digits, not the numeric value. |
{
"type": "object",
"required": [
"text"
],
"properties": {
"keep": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 200,
"description": "Strings that must never be redacted, such as your own email address or company name. Case-insensitive, whole match."
},
"text": {
"type": "string",
"maxLength": 1000000,
"minLength": 1,
"description": "The document text to redact (plain text, Markdown, CSV, JSON or HTML source)."
},
"level": {
"type": "integer",
"maximum": 4,
"minimum": 1,
"description": "Cumulative preset, default 1. 1: government identifiers (SSN, ITIN, EIN, UK NINO, Canadian SIN, driver's license, passport); 2: level 1 plus dates of birth; 3: level 2 plus street addresses and phone numbers; 4: level 3 plus person names and email addresses."
},
"style": {
"enum": [
"label",
"generic",
"numbered",
"last4"
],
"type": "string",
"description": "label (default): [REDACTED:SSN]. generic: [REDACTED]. numbered: [PERSON_1], same value same number. last4: [REDACTED:SSN:*6789] for numeric identifiers; this discloses the last four characters."
},
"terms": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 200,
"description": "Words or phrases to redact wherever they appear (business names, project names, people you already know). Case-insensitive."
},
"exclude": {
"type": "array",
"items": {
"enum": [
"ssn",
"itin",
"ein",
"nino",
"sin",
"drivers_license",
"passport",
"date_of_birth",
"address",
"phone",
"person_name",
"email",
"credit_card",
"iban",
"routing_number",
"account_number",
"ip_address",
"url",
"date",
"organization"
],
"type": "string"
},
"maxItems": 20,
"description": "Categories to remove from the level preset."
},
"include": {
"type": "array",
"items": {
"enum": [
"ssn",
"itin",
"ein",
"nino",
"sin",
"drivers_license",
"passport",
"date_of_birth",
"address",
"phone",
"person_name",
"email",
"credit_card",
"iban",
"routing_number",
"account_number",
"ip_address",
"url",
"date",
"organization"
],
"type": "string"
},
"maxItems": 20,
"description": "Categories to add to the level preset."
},
"useModel": {
"type": "boolean",
"description": "Add a language-model pass for names, organizations and addresses (when those categories are on). Sends the text, up to 60000 characters, to the configured model provider. Default false."
},
"categories": {
"type": "array",
"items": {
"enum": [
"ssn",
"itin",
"ein",
"nino",
"sin",
"drivers_license",
"passport",
"date_of_birth",
"address",
"phone",
"person_name",
"email",
"credit_card",
"iban",
"routing_number",
"account_number",
"ip_address",
"url",
"date",
"organization"
],
"type": "string"
},
"maxItems": 20,
"description": "Exact set of categories to redact; replaces the level preset when given."
},
"minDigitRun": {
"type": "integer",
"maximum": 40,
"minimum": 4,
"description": "Also redact every run of at least this many digits (spaces, dots and hyphens between digits count as part of the run). This is the number of digits, not the numeric value."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"settlement",
"tradeDate"
],
"properties": {
"weekend": {
"type": "array",
"items": {
"type": "integer",
"maximum": 6,
"minimum": 0
},
"maxItems": 6,
"description": "Non-business weekdays, 0=Sunday..6=Saturday. Default [0, 6]; use [5, 6] for a Friday/Saturday weekend."
},
"calendar": {
"enum": [
"us-federal",
"us-federal-reserve",
"nyse",
"us-equities-settlement",
"uk-england-and-wales",
"uk-scotland",
"uk-northern-ireland",
"weekends-only",
"caller"
],
"type": "string",
"description": "Named holiday calendar with a source and supported date range (outside it the answer is unsupported), weekends-only (Saturday/Sunday only), or caller (only the holidays you list)."
},
"holidays": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
},
"maxItems": 400,
"description": "Extra non-business dates YYYY-MM-DD (company closures, a calendar we do not carry)."
},
"cycleDays": {
"type": "integer",
"maximum": 30,
"minimum": 0,
"description": "custom only."
},
"tradeDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
},
"settlement": {
"enum": [
"us-equities",
"custom"
],
"type": "string",
"description": "us-equities: T+1 since 2024-05-28 on the us-equities-settlement calendar (2026-2028). custom: cycleDays on calendar/holidays/weekend."
},
"claimedSettlementDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
}
},
"additionalProperties": false
}| releasedOn* |
| string |
| freeCounting* | string |
| chargeCounting* | string | Whether chargeable days skip weekends/holidays. |
| receiptDayCounts* | boolean | Whether the day of receipt is day 1. |
| releaseDayCounts* | boolean | Whether the release day is counted. |
| claimedChargeMinor | integer |
{
"type": "object",
"required": [
"receivedOn",
"releasedOn",
"receiptDayCounts",
"releaseDayCounts",
"freeDays",
"freeCounting",
"chargeCounting",
"tiers",
"currency"
],
"properties": {
"tiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"fromDay",
"rateMinor"
],
"properties": {
"fromDay": {
"type": "integer",
"maximum": 3650,
"minimum": 1,
"description": "Chargeable day number (1 = first day after free time) at which this rate starts; the first tier must start at 1."
},
"rateMinor": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Charge per day in minor units (cents)."
}
}
},
"maxItems": 20,
"minItems": 1
},
"weekend": {
"type": "array",
"items": {
"type": "integer",
"maximum": 6,
"minimum": 0
},
"maxItems": 6,
"description": "Non-business weekdays, 0=Sunday..6=Saturday. Default [0, 6]; use [5, 6] for a Friday/Saturday weekend."
},
"calendar": {
"enum": [
"us-federal",
"us-federal-reserve",
"nyse",
"us-equities-settlement",
"uk-england-and-wales",
"uk-scotland",
"uk-northern-ireland",
"weekends-only",
"caller"
],
"type": "string",
"description": "Named holiday calendar with a source and supported date range (outside it the answer is unsupported), weekends-only (Saturday/Sunday only), or caller (only the holidays you list)."
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"maxLength": 3
},
"freeDays": {
"type": "integer",
"maximum": 3650,
"minimum": 0
},
"holidays": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
},
"maxItems": 400,
"description": "Extra non-business dates YYYY-MM-DD (company closures, a calendar we do not carry)."
},
"receivedOn": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
},
"releasedOn": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10
},
"freeCounting": {
"enum": [
"calendar",
"business"
],
"type": "string"
},
"chargeCounting": {
"enum": [
"calendar",
"business"
],
"type": "string",
"description": "Whether chargeable days skip weekends/holidays."
},
"receiptDayCounts": {
"type": "boolean",
"description": "Whether the day of receipt is day 1."
},
"releaseDayCounts": {
"type": "boolean",
"description": "Whether the release day is counted."
},
"claimedChargeMinor": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
},
"additionalProperties": false
}| productDescription | string | Construction, dimensions, how it works, packaging. |
| importStateOfAssembly | string |
{
"type": "object",
"required": [
"productName",
"materialsBreakdown",
"intendedUse",
"originCountry",
"destinationCountry"
],
"properties": {
"productUrl": {
"type": "string",
"maxLength": 2048,
"description": "Public product or spec-sheet page. Its text is read to supplement productDescription; if it cannot be read the request still succeeds and says so in warnings."
},
"intendedUse": {
"type": "string",
"maxLength": 2000,
"minLength": 2
},
"productName": {
"type": "string",
"maxLength": 300,
"minLength": 2
},
"originCountry": {
"type": "string",
"maxLength": 60,
"minLength": 2
},
"currentHtsCode": {
"type": "string",
"pattern": "^\\d{4}(\\.?\\d{2}){1,3}$"
},
"customsValueUsd": {
"type": "number",
"maximum": 10000000000,
"minimum": 0,
"description": "Entered value, used to estimate duty and savings."
},
"destinationCountry": {
"type": "string",
"maxLength": 60,
"minLength": 2
},
"materialsBreakdown": {
"type": "array",
"items": {
"type": "object",
"required": [
"material",
"percentByWeight"
],
"properties": {
"material": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"percentByValue": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"percentByWeight": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 30,
"minItems": 1
},
"productDescription": {
"type": "string",
"maxLength": 5000,
"description": "Construction, dimensions, how it works, packaging."
},
"importStateOfAssembly": {
"enum": [
"fully_assembled",
"unassembled_kit",
"components",
"bulk"
],
"type": "string"
}
},
"additionalProperties": false
}