{"id":51296219,"url":"https://github.com/skzl-ai/tscg","last_synced_at":"2026-06-30T15:00:38.775Z","repository":{"id":350425979,"uuid":"1205959633","full_name":"SKZL-AI/tscg","owner":"SKZL-AI","description":"TSCG — Deterministic tool-schema compiler for LLM agents. 50-72% token savings, 50 tools in 2.4ms. Phi-4 recovers from 0% to 90% accuracy. 459 tests, zero dependencies, MIT.","archived":false,"fork":false,"pushed_at":"2026-05-23T21:02:02.000Z","size":8662,"stargazers_count":19,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-06-30T15:00:32.111Z","etag":null,"topics":["agentic-ai","compression","function-calling","langchain","llm","mcp","prompt-optimization","token-savings","tool-use","typescript"],"latest_commit_sha":null,"homepage":"https://github.com/SKZL-AI/tscg#readme","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SKZL-AI.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-09T12:50:22.000Z","updated_at":"2026-06-19T17:34:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/SKZL-AI/tscg","commit_stats":null,"previous_names":["skzl-ai/tscg"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/SKZL-AI/tscg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SKZL-AI%2Ftscg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SKZL-AI%2Ftscg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SKZL-AI%2Ftscg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SKZL-AI%2Ftscg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SKZL-AI","download_url":"https://codeload.github.com/SKZL-AI/tscg/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SKZL-AI%2Ftscg/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34971624,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-30T02:00:05.919Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentic-ai","compression","function-calling","langchain","llm","mcp","prompt-optimization","token-savings","tool-use","typescript"],"created_at":"2026-06-30T15:00:17.184Z","updated_at":"2026-06-30T15:00:38.736Z","avatar_url":"https://github.com/SKZL-AI.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TSCG -- Tool-Schema Compression Grammar\n\n[![npm @tscg/core](https://img.shields.io/npm/v/@tscg/core?label=%40tscg%2Fcore)](https://www.npmjs.com/package/@tscg/core)\n[![npm @tscg/mcp-proxy](https://img.shields.io/npm/v/@tscg/mcp-proxy?label=%40tscg%2Fmcp-proxy)](https://www.npmjs.com/package/@tscg/mcp-proxy)\n[![npm @tscg/tool-optimizer](https://img.shields.io/npm/v/@tscg/tool-optimizer?label=%40tscg%2Ftool-optimizer)](https://www.npmjs.com/package/@tscg/tool-optimizer)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Tests](https://img.shields.io/badge/tests-108%20passing-brightgreen)]()\n[![Zero Dependencies](https://img.shields.io/badge/dependencies-0-green)]()\n\n**Deterministic tool-schema compiler that reduces LLM tool-definition overhead by 50--72% while *improving* accuracy.**\n\n1,200 LOC TypeScript. Zero dependencies. Sub-millisecond. 23KB ESM bundle.\n\n## Paper 2: Agentic RAG Enablement (May 2026)\n\n### 6,566-Call Agentic RAG Benchmark\n\nTSCG enables agentic RAG under constrained context budgets. We evaluate 14 models (1.5B--32B local models plus one frontier API model) across 6,566 API calls at three context budgets (8K, 16K, 32K) with 28 tool definitions:\n\n| Condition | JSON EM | TSCG EM | Delta |\n|-----------|---------|---------|-------|\n| 8K, 28 tools (avg 8 models) | 2.6% | 23.1% | **+20.5pp** |\n| HotpotQA (Phi-4, 8K) | 0% | 48% | **+48pp** |\n| 32K ceiling control | -- | -- | 4 of 5 models: \\|Delta\\| \u003c= 1pp |\n| Frontier: 500 tools, 200K | 0% | 90% | **+90pp** |\n\n**Key finding:** At 8K context with 28 tools, JSON schemas overflow the context window entirely (near-zero accuracy, 2.6% avg EM). TSCG compression restores RAG functionality -- a categorical enablement, not incremental improvement.\n\n- 14 models tested (1.5B--32B + one frontier API model), $107 total cost\n- Frontier scaling: JSON overflows at ~494 tools, TSCG operational beyond 800\n- External validation on HotpotQA confirms generalizability\n- TAB Scenario C (25--100 tools) cross-validates stable compression at scale\n- Balanced profile ablation (n=400): equivalent accuracy to conservative (delta = +0.8pp)\n- Paper: [TSCG-RAG-Benchmark-Paper.pdf](./TSCG-RAG-Benchmark-Paper.pdf)\n\n---\n\n## Paper 1 Findings (April 2026)\n\n### 720-Call E2E Benchmark on Claude Models\n\n**Claude Opus 4.7** -- matches-or-beats baseline with 57-63% token savings:\n\n| Tool Count | Baseline | TSCG Balanced | Δ Accuracy | Savings |\n|------------|----------|---------------|------------|---------|\n| 16 | 70.0% | **77.5%** | **+7.5pp** | 56.9% |\n| 43 | 77.5% | **80.0%** | **+2.5pp** | 63.0% |\n| 50 | 72.5% | **80.0%** | **+7.5pp** | 62.8% |\n\n**Claude Sonnet 4** -- consistent 57-63% compression with robust accuracy:\n\n| Tool Count | Baseline | TSCG Balanced | Δ Accuracy | Savings |\n|------------|----------|---------------|------------|---------|\n| 16 | 77.5% | 80.0% | +2.5pp | 56.9% |\n| 43 | 85.0% | 80.0% | -5.0pp | 63.0% |\n| 50 | 77.5% | 77.5% | ±0.0pp | 62.8% |\n\n### 480-Call MCP Proxy Benchmark (v1.4.1)\n\n**480-call extended proxy benchmark** (n=40 per cell, 2 seeds, 2 models x 3 tool counts):\n\n| Model | Tools | Baseline | TSCG Proxy | Δ Accuracy | Token Savings |\n|-------|-------|----------|------------|------------|---------------|\n| **Opus 4.7** | 16 | 70.0% | **75.0%** | **+5.0pp** | 53.1% |\n| **Opus 4.7** | 43 | 75.0% | 75.0% | ±0.0pp | 55.8% |\n| **Opus 4.7** | 50 | 77.5% | 77.5% | ±0.0pp | 55.5% |\n| Sonnet 4 | 16 | 80.0% | 77.5% | -2.5pp | 53.1% |\n| Sonnet 4 | 43 | 85.0% | 82.5% | -2.5pp | 55.8% |\n| Sonnet 4 | 50 | 77.5% | 77.5% | ±0.0pp | 55.5% |\n\nOpus 4.7 matches-or-beats baseline in all conditions; Sonnet 4 within expected CI (max -2.5pp). Both achieve 53-56% token savings.\n\n**Tool-Optimizer E2E validation** (`@tscg/tool-optimizer` `withTSCG()` wrapper, 30 calls, Sonnet 4 @ 16 tools): withTSCG **86.7%** vs baseline 80.0% (**+6.7pp**), 36.6% character savings.\n\n### Three Frontier-Model Operator Archetypes\n\nTSCG compression response is model-specific. Three distinct archetypes observed:\n\n- **Opus 4.7 -- Operator-HUNGRY** -- every operator contributes; balanced (all-8) is optimal\n- **Sonnet 4 -- Operator-ROBUST** -- config-agnostic; 6 of 7 configs near-identical accuracy\n- **GPT-5.2 -- Operator-SENSITIVE** -- CFL helps, CFO hurts; custom config optimal\n\n### External Validation -- 4 Independent Benchmarks\n\nTSCG's internal benchmark (TAB -- Tool-Agentic Bench, ~19,000 calls) is **independently corroborated** by four external benchmarks, including industry-standard evaluation suites:\n\n| Benchmark | Type | Result | Significance |\n|-----------|------|--------|--------------|\n| **BFCL** ([Berkeley Function Calling Leaderboard](https://gorilla.cs.berkeley.edu/leaderboard.html)) | Industry standard | **108--181% ARR** across 3 frontier models | Sonnet 4: 85.7%→93.2% (+7.5pp), GPT-4o: 31.7%→57.4% (+25.7pp), GPT-5.2: 61.9%→89.4% (+27.5pp) |\n| **ToolBench** (Qin et al.) | Academic benchmark | **+5.0pp** (75.0%→80.0%) | Real-world tool catalog, 20 tools |\n| **API-Bank** (Li et al.) | Academic benchmark | -5.0pp (80.0%→75.0%) | Honest negative result -- not all benchmarks improve |\n| **Real MCP Server** (@modelcontextprotocol/server-filesystem) | Production endpoint | **100% syntactic validity** | 30 tasks on live MCP server, server-acceptance 90--97% |\n\n**TAB → Real MCP Transfer (0.1pp):** The internal TAB benchmark is not merely a self-constructed evaluation -- it demonstrably **predicts real-world MCP behavior within 0.1 accuracy points**. Sonnet 4 on 43-tool MCP: synthetic TAB delta = -1.6pp vs real MCP delta = -1.7pp. This tight transfer validates TAB as a reliable proxy for production MCP deployments.\n\nMean across the 3 external catalog benchmarks: **+2.5pp** (80.2%→82.7%).\n\nSee [paper](./TSCG-paper.pdf) for full methodology and per-benchmark analysis.\n\n## The Problem\n\nEvery LLM agent framework sends full JSON Schema definitions for every registered tool on every API call. Claude Code injects ~50,000 tokens of tool definitions per subprocess. At production scale (100K calls/day), the schema overhead alone costs **\u003e$30,000/month**.\n\nWorse: small models (4B--14B) cannot parse JSON-format tool schemas reliably at scale -- achieving **0--49% accuracy** with \u003e15 tools. This locks agentic capabilities behind expensive frontier APIs.\n\n## Key Results\n\n### Pareto Dominance: Better Accuracy AND Fewer Tokens\n\nBFCL ([Berkeley Function Calling Leaderboard](https://gorilla.cs.berkeley.edu/leaderboard.html)) validation -- the industry standard for tool-calling evaluation:\n\n| Model | Without TSCG | With TSCG | Improvement | Token Savings |\n|-------|-------------|-----------|-------------|---------------|\n| Claude Sonnet 4 | 85.7% | 93.2% | +7.5pp | 46.8% |\n| **GPT-4o** | **31.7%** | **57.4%** | **+25.7pp (181% ARR)** | 2.6% |\n| GPT-5.2 | 61.9% | 89.4% | +27.5pp (144% ARR) | 8.3% |\n\nEvery model *improves*. TSCG achieves **108--181% Accuracy Retention Rate** -- it doesn't just retain accuracy, it increases it.\n\n### Small Model Enablement\n\n| Model | JSON Baseline (20 tools) | With TSCG | Recovery |\n|-------|------------------------|-----------|----------|\n| Phi-4 14B | 0% | 84.4% | **+84.4pp** |\n| Mistral 7B | 35% | 80.1% | **+45.1pp** |\n| Gemma 3 4B | 49.9% | 67.0% | +17.1pp |\n\nSeven small models (4B--14B) that achieve 0--49% accuracy on JSON tools recover to **65--90%** with TSCG. The root cause: JSON format, not model capacity (R^2 = 0.88 against JSON baselines, collapses to 0.03 against text -- **97% of variance is format sensitivity**).\n\n### Full Benchmark Summary\n\nFrom **~19,000 API calls** across **12 models** (4B--32B + 3 frontier APIs), 5 scenarios:\n\n| Finding | Detail |\n|---------|--------|\n| Token savings | 50--72% on tool schemas |\n| BFCL validation | 108--181% Accuracy Retention Rate |\n| Formal guarantee | \u003e=51% savings on any well-formed schema (Theorem 3.1) |\n| Predictive model | R^2 = 0.88 predicts TSCG benefit from single baseline measurement |\n| Speed | 50 tools in 2.4ms (Node.js v24, commodity hardware) |\n| Cost at scale | \u003e$30,000/month savings at 100K calls/day |\n\n### Verified Performance (Fresh Install)\n\nIndependent reproduction on `@tscg/core` from npm:\n\n| Metric | Measured |\n|--------|----------|\n| 5 realistic tools (Claude target) | 59.5% token savings |\n| 50 tools | 66.6% savings in 2.4ms |\n| Compression time (5 tools) | 0.9ms |\n| Unit tests | 108 passing (core 47 + proxy 61) |\n| Bundle | 34.7KB (11.7KB gzipped) |\n| Dependencies | 0 |\n\n## What TSCG Does\n\nTSCG applies 8 formally-defined transforms grounded in how causal transformers process tokens:\n\n| Principle | Full Name | What It Does |\n|-----------|-----------|-------------|\n| **TAS** | Tokenizer-Aligned Syntax | Optimizes for BPE boundaries |\n| **CFL** | Constraint-First Layout | Exploits the attention sink at position 0 |\n| **CFO** | Causal-Flow Ordering | Orders operations into causal chains |\n| **SDM** | Semantic Density Maximization | Removes 104+ filler patterns |\n| **DRO** | Delimiter-Role Optimization | Converts verbose phrases to compact delimiters |\n| **CCP** | Closure-Context Preservation | Appends closure block for recency bias |\n| **CAS** | Causal Access Scoring | Scores and reorders by parameter fragility |\n| **SAD-F** | Selective Anchor Duplication | Budget-constrained anchor duplication |\n\n## Quick Start\n\nAll three `@tscg/*` packages use umbrella versioning -- same version number, released together.\n\n```bash\nnpm install @tscg/core                # Core compression engine\nnpm install @tscg/mcp-proxy           # Transparent MCP middleware\nnpm install @tscg/tool-optimizer      # LangChain / Vercel AI SDK integrations\n```\n\n```typescript\nimport { compress } from '@tscg/core';\n\nconst tools = [\n  {\n    type: 'function',\n    function: {\n      name: 'get_weather',\n      description: 'Get the current weather for a location',\n      parameters: {\n        type: 'object',\n        properties: {\n          location: { type: 'string', description: 'City name or coordinates' },\n          units: { type: 'string', enum: ['celsius', 'fahrenheit'] },\n        },\n        required: ['location'],\n      },\n    },\n  },\n];\n\nconst result = compress(tools, { model: 'claude-sonnet' });\nconsole.log(result.compressed);\nconsole.log(`Saved ${result.metrics.tokens.savingsPercent}% tokens`);\n// =\u003e \"get_weather(location:str units?:str[celsius|fahrenheit])|Get current weather\"\n// =\u003e \"Saved 62.3% tokens\"\n```\n\n### Result Object\n\n```typescript\nconst result = compress(tools, { model: 'claude-sonnet', profile: 'balanced' });\n\nresult.compressed                        // string — compressed tool definitions\nresult.metrics.tokens.original           // number — original token count\nresult.metrics.tokens.compressed         // number — compressed token count\nresult.metrics.tokens.savingsPercent     // number — e.g. 62.3\nresult.metrics.compressionTimeMs         // number — e.g. 0.9\nresult.appliedPrinciples                 // string[] — e.g. ['SDM', 'CAS', 'DRO', 'TAS']\nresult.metrics.perTool                   // { name, originalTokens, compressedTokens, savingsPercent }[]\n```\n\n### Options\n\n```typescript\ncompress(tools, {\n  model: 'claude-sonnet',   // Target model: 'claude-sonnet' | 'gpt-4o' | 'gpt-4' | ...\n  profile: 'balanced',      // Profile: 'conservative' | 'balanced' | 'aggressive' | 'auto'\n});\n```\n\n### Description-Only Mode (v1.4.0)\n\nCompress only `.description` fields while preserving the full JSON Schema structure -- compatible with native tool-calling APIs (OpenAI, Anthropic, Google):\n\n```typescript\nimport { compressDescriptions } from '@tscg/core';\n\nconst result = compressDescriptions(tools, { model: 'claude-sonnet' });\nconsole.log(result.tools);              // Tools with compressed descriptions\nconsole.log(result.metrics.descriptions.savingsPercent); // ~25-40% description savings\n```\n\n### Auto Profile (v1.4.0)\n\nThe `auto` profile selects compression principles based on catalog size. At \u003e=30 tools, CFL/CFO are automatically disabled (they become harmful at scale per our 100-tool benchmark findings):\n\n```typescript\ncompress(tools, { model: 'claude-sonnet', profile: 'auto' });\n```\n\n## Packages\n\n| Package | Description | Install |\n|---------|-------------|---------|\n| [`@tscg/core`](packages/core/) | Core compression engine (8 operators) | `npm i @tscg/core` |\n| [`@tscg/mcp-proxy`](packages/mcp-proxy/) | MCP stdio proxy -- transparent TSCG compression for any MCP server | `npm i @tscg/mcp-proxy` |\n| [`@tscg/tool-optimizer`](packages/tool-optimizer/) | LangChain, MCP, Vercel AI SDK integrations | `npm i @tscg/tool-optimizer` |\n\n## CLI\n\n```bash\n# Compress tool schemas\nnpx tsx cli/tscg.ts compress --input tools.json --model claude-sonnet --profile balanced\n\n# Run benchmarks\nnpx tsx cli/tscg.ts benchmark --model claude-sonnet\n\n# Show compression info\nnpx tsx cli/tscg.ts info\n```\n\n## MCP Proxy\n\n`@tscg/mcp-proxy` sits between Claude Code (or any MCP client) and your MCP tool servers, transparently compressing tool schemas:\n\n```bash\n# Opus 4.7 -- 57-63% savings, +2.5 to +7.5pp accuracy\nnpx @tscg/mcp-proxy --target=claude-opus-4-7 --server=\u003cyour-mcp-command\u003e\n\n# Sonnet 4 -- 57-63% savings, robust accuracy\nnpx @tscg/mcp-proxy --target=claude-sonnet-4 --server=\u003cyour-mcp-command\u003e\n```\n\nSetting `--target` automatically enables the full compression pipeline validated by our 720-call benchmark. No other flags required.\n\n**Legacy mode** (backward compatible with v1.0.x):\n```bash\nnpx @tscg/mcp-proxy --server=\u003cyour-mcp-command\u003e\n```\n\n## Integrations\n\n**LangChain:**\n```typescript\nimport { withTSCG } from '@tscg/tool-optimizer/langchain';\nconst optimizedAgent = withTSCG(agent);\n```\n\n**Vercel AI SDK:**\n```typescript\nimport { tscgMiddleware } from '@tscg/tool-optimizer/vercel';\n```\n\n## TSCG vs Other Approaches\n\n| Property | TSCG | LLMLingua-2 | DSPy / SAMMO |\n|----------|------|-------------|-------------|\n| Accuracy effect | **Improves** (108--181% ARR) | Degrades (-5 to -20%) | Degrades |\n| Speed | **2.4ms / 50 tools** | ~42s (GPU) | Minutes |\n| Dependencies | **None** | GPU + ML framework | API calls |\n| Deterministic | **Yes** | No | No |\n| Formal guarantees | **\u003e=51% savings** | None | None |\n| Bundle size | **34.7KB** | Requires PyTorch | Full stack |\n| Works offline | **Yes** | GPU required | API required |\n\n## Who Benefits\n\n- **Claude Code / Cursor / Windsurf users**: ~35K fewer tokens per subprocess\n- **Local LLM users (Ollama)**: 7B models become functional tool-use agents with 50+ tools\n- **Production API deployments**: \u003e$30,000/month savings at 100K calls/day\n- **Multi-agent orchestration**: Savings multiply per sub-agent in the chain\n- **Edge / Mobile / Privacy**: EU AI Act compliant local deployment becomes viable\n\n## Project Structure\n\n```\npackages/\n  core/             # @tscg/core — compression engine (8 operators, 47 tests)\n  mcp-proxy/        # @tscg/mcp-proxy — stdio proxy for MCP servers (61 tests)\n  tool-optimizer/   # @tscg/tool-optimizer — LangChain, Vercel AI SDK integrations\npaper/              # LaTeX source (arXiv version)\ncli/                # Unified CLI (compress, benchmark, analyze, info)\nbenchmark/          # TAB benchmark harness, analysis code, raw data\nintegrations/       # Framework integration examples\ndocs/               # Technical documentation\n```\n\n## Development\n\n```bash\ngit clone https://github.com/SKZL-AI/tscg.git\ncd tscg\nnpm install\nnpm run build\nnpm test          # 459 tests\nnpm run typecheck # Type checking\n```\n\n## Papers\n\n### Paper 1: TSCG -- Deterministic Tool-Schema Compilation for Agentic LLM Deployments\n\nFurkan Sakizli ([ORCID: 0009-0009-5975-5014](https://orcid.org/0009-0009-5975-5014)). April 2026.\n\n[TSCG-paper.pdf](./TSCG-paper.pdf) -- arXiv preprint (full version, 12 models, ~19,000 API calls, 4-class taxonomy)\n\nLaTeX source is available in [`paper/`](paper/).\n\n### Paper 2: Tool-Schema Compression Enables Agentic RAG Under Constrained Context Budgets\n\nFurkan Sakizli ([ORCID: 0009-0009-5975-5014](https://orcid.org/0009-0009-5975-5014)). May 2026.\n\n[TSCG-RAG-Benchmark-Paper.pdf](./TSCG-RAG-Benchmark-Paper.pdf) -- 14 models, 6,566 API calls, binary enablement at 8K\n\n## Citation\n\n```bibtex\n@article{sakizli2026tscg,\n  title={TSCG: Deterministic Tool-Schema Compilation for Agentic LLM Deployments},\n  author={Sakizli, Furkan},\n  year={2026},\n  note={arXiv preprint},\n  orcid={0009-0009-5975-5014}\n}\n\n@article{sakizli2026tscgrag,\n  title={Tool-Schema Compression Enables Agentic RAG Under Constrained Context Budgets},\n  author={Sakizli, Furkan},\n  year={2026},\n  note={arXiv preprint},\n  orcid={0009-0009-5975-5014}\n}\n```\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, code style, and PR guidelines.\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskzl-ai%2Ftscg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskzl-ai%2Ftscg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskzl-ai%2Ftscg/lists"}