Answers from the documentation; checking which model is on duty
Hi - I answer from the OpenSmartRoute documentation: routing, the API, plans and quotas, self-hosting. Ask away, or open a support ticket if you need a person.
Grounded in the docs - follow a source before acting on it.
tsql-functions - Skill - OpenSmartRoute
Skillv1.0.0
tsql-functions
Complete T-SQL function reference for SQL Server and Azure SQL Database. PROACTIVELY activate for: (1) string functions (CONCAT_WS, STRING_SPLIT, STRING_AGG, TRIM, REPLACE, LEFT/RIGHT/SUBSTRING), (2)…
Imported from josiahsiegel/claude-plugin-marketplace (plugins/tsql-master/skills/tsql-functions/SKILL.md). Install upstream with npx skills add josiahsiegel/claude-plugin-marketplace --skill tsql-functions. Copyright stays with the author.
T-SQL Functions Reference
Complete reference for all T-SQL function categories with version-specific availability.
Quick Reference
String Functions
Function
Description
Version
CONCAT(str1, str2, ...)
NULL-safe concatenation
2012+
CONCAT_WS(sep, str1, ...)
Concatenate with separator
2017+
STRING_AGG(expr, sep)
Aggregate strings
2017+
STRING_SPLIT(str, sep)
Split to rows
2016+
STRING_SPLIT(str, sep, 1)
With ordinal column
2022+
TRIM([chars FROM] str)
Remove leading/trailing
2017+
TRANSLATE(str, from, to)
Character replacement
2017+
FORMAT(value, format)
.NET format strings
2012+
Date/Time Functions
Function
Description
Version
DATEADD(part, n, date)
Add interval
All
DATEDIFF(part, start, end)
Difference (int)
All
DATEDIFF_BIG(part, s, e)
Difference (bigint)
2016+
EOMONTH(date, [offset])
Last day of month
2012+
DATETRUNC(part, date)
Truncate to precision
2022+
DATE_BUCKET(part, n, date)
Group into buckets
2022+
AT TIME ZONE 'tz'
Timezone conversion
2016+
Window Functions
Function
Description
Version
ROW_NUMBER()
Sequential unique numbers
2005+
RANK()
Rank with gaps for ties
2005+
DENSE_RANK()
Rank without gaps
2005+
NTILE(n)
Distribute into n groups
2005+
LAG(col, n, default)
Previous row value
2012+
LEAD(col, n, default)
Next row value
2012+
FIRST_VALUE(col)
First in window
2012+
LAST_VALUE(col)
Last in window
2012+
IGNORE NULLS
Skip NULLs in offset funcs
2022+
SQL Server 2022 New Functions
Function
Description
GREATEST(v1, v2, ...)
Maximum of values
LEAST(v1, v2, ...)
Minimum of values
DATETRUNC(part, date)
Truncate date
GENERATE_SERIES(start, stop, [step])
Number sequence
JSON_OBJECT('key': val)
Create JSON object
JSON_ARRAY(v1, v2, ...)
Create JSON array
JSON_PATH_EXISTS(json, path)
Check path exists
IS [NOT] DISTINCT FROM
NULL-safe comparison
Core Patterns
String Manipulation
-- Concatenate with separator (NULL-safe)SELECT CONCAT_WS(', ', FirstName, MiddleName, LastName) AS FullName-- Split string to rows with ordinalSELECT value, ordinalFROM STRING_SPLIT('apple,banana,cherry', ',', 1)-- Aggregate strings with orderingSELECT DeptID, STRING_AGG(EmployeeName, ', ') WITHIN GROUP (ORDER BY HireDate)FROM EmployeesGROUP BY DeptID
Date Operations
-- Truncate to first of monthSELECT DATETRUNC(month, OrderDate) AS MonthStart-- Group by week bucketsSELECT DATE_BUCKET(week, 1, OrderDate) AS WeekBucket, COUNT(*) AS OrderCountFROM OrdersGROUP BY DATE_BUCKET(week, 1, OrderDate)-- Generate date seriesSELECT CAST(value AS date) AS DateFROM GENERATE_SERIES( CAST('2024-01-01' AS date), CAST('2024-12-31' AS date), 1)
Window Functions
-- Running total with partitioningSELECT OrderID, CustomerID, Amount, SUM(Amount) OVER ( PARTITION BY CustomerID ORDER BY OrderDate ROWS UNBOUNDED PRECEDING ) AS RunningTotalFROM Orders-- Get previous non-NULL value (SQL 2022+)SELECT Date, Value, LAST_VALUE(Value) IGNORE NULLS OVER ( ORDER BY Date ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING ) AS PreviousNonNullFROM Measurements
JSON Operations
-- Extract scalar valueSELECT JSON_VALUE(JsonColumn, '$.customer.name') AS CustomerName-- Parse JSON array to rowsSELECT j.ProductID, j.QuantityFROM OrdersCROSS APPLY OPENJSON(OrderDetails)WITH ( ProductID INT '$.productId', Quantity INT '$.qty') AS j-- Build JSON object (SQL 2022+)SELECT JSON_OBJECT('id': CustomerID, 'name': CustomerName) AS CustomerJsonFROM Customers
Additional References
For deeper coverage of specific function categories, see:
references/string-functions.md - Complete string function reference with examples
references/window-functions.md - Window and ranking functions with frame specifications
Installed into a catalogue, chosen by a router
Install tsql-functions and it becomes one more candidate the router can pick - when it fits.
A listing is a routing target with a manifest: what it does, which domains it covers, what it costs and who publishes it. Once installed it sits beside your own models and tools, is scored like any other candidate for each request, and shows up in the trace when it wins. Ratings come from workspaces that installed it, one per account.
When a provider is down or over quota the request moves on; the trace says it did.
Use it
Copy one of these into your project. Installing also returns the manifest and these snippets.
# after Install: the listing is in your workspace's routing pool - a plan picks it for its slotcurl-s-X POST https://osr-api.kindrock-caaab1a2.centralindia.azurecontainerapps.io/api/v1/route -H 'Authorization: Bearer $OSR_API_KEY' -H 'Content-Type: application/json' -d '{"text": "...", "plan": true}'
Manifest
An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.