Terse
This MCP server exposes tools for working with Terse source code, including evaluation, transpilation, parsing, token counting, and session alias management.
Evaluate Terse source with a gas limit, returning a JSON-safe result and captured print output (session aliases expanded).
Transpile Terse source to readable, executable Python.
Count tokens of Terse source using tiktoken
cl100k_base, with a character-based fallback.Parse Terse source and return the AST as JSON (session aliases expanded).
Define session
$aliasesthat expand to given Terse forms, reducing repetition.List all defined session aliases and their expansions.
Clear all session aliases.
Provides Stripe usage reporting integration: verifies HMAC-signed metered execution receipts, aggregates tokens-saved per customer per month, and reports usage to Stripe billing meter events.
Terse
An AI-native code language: a machine-designed prefix HIR for AI coding agents.
AI agents write human-designed languages — verbose, infix, and syntax-error-prone. Terse is a canonical prefix intermediate representation designed for machines: fixed-arity ops, one spelling per construct, structured errors built for repair loops, and a surface syntax measured to be token-cheaper than Python.
Why
Every mainstream language was designed for human eyes: infix operators with precedence tables, multiple spellings for the same construct (if vs ternary vs statement), significant whitespace, and error messages written for people. When an AI coding agent emits code, each of those is a failure mode — a misplaced paren or a precedence guess costs a repair iteration.
Terse removes the decisions a model shouldn't have to make:
Prefix, always.
(add a (mul b c))— the op comes first, so the structure of every form is known after one token. No precedence tables, no associativity, exactly one way to parenthesize anything.Canonical. One spelling per construct, enforced by the parser.
ifis always prefix;true/false/nullare always lowercase; bare symbols are always variable references. Canonicality shrinks the output distribution a model must learn and makes diffs, caches, and dedup exact.Dense. The v0.2 syntax was shaped by
cl100k_basemeasurements: juxtaposed parens, head-position calls, n-aryif, and fusion ops for hot patterns. Reference solutions measure 0.60–1.00× Python tokens across 8 bench tasks (seebench/).Fixed arities, checked at parse time.
(add 1)fails withE103 arity-mismatchbefore anything runs.Structured errors for repair loops. Every failure is a
TerseErrorwith a stable code (E100–E300), phase, op, source position,expected/got, and a concretehint. Feederr.to_dict()back to the model and the fix is usually one shot.Constrained-decoding grammar.
terse/grammar.gbnfis a GBNF grammar for the full language — under constrained decoding, syntax errors become impossible, and the only remaining failures are semantic ones the error protocol already covers.
Related MCP server: @hyperscript-tools/mcp-server
Quickstart
import terse
# Parse: surface syntax -> AST tuples
ast = terse.parse("(let x 40 (add x 2))") # ("let", "x", 40, ("add", ("var", "x"), 2))
# Run: (value, printed_output)
value, output = terse.run(ast) # (42, "")
# Transpile: AST -> readable Python, verified by exec
src = terse.to_python(ast)
ns = {}
exec(compile(src, "<terse>", "exec"), ns)
ns["_terse_result"] # 42CLI:
python -m terse run examples/fib.terse # run; prints program output, "=> <value>" to stderr
python -m terse run prog.terse --gas 1000000 # with a custom gas budget
python -m terse transpile prog.terse # print the generated Python
python -m terse check prog.terse # parse only; prints OK or error JSON (exit 0/1)Errors are machine-readable JSON on stderr:
$ python -m terse check broken.terse
{"code": "E103", "phase": "parse", "op": "add", "pos": {"line": 1, "col": 1, "index": 1}, ...}A taste of the language:
; recursive fibonacci via def
(def fib(n)(if(lt n 2)n(add(fib(dec n))(fib(dec(dec n))))))
(print(fib 10)) ; => 55
; fizzbuzz: n-ary if, divisibility op, juxtaposed parens
(for i(range 1 21)(print(if(divis i 15)"fizzbuzz"(divis i 3)"fizz"(divis i 5)"buzz"i)))
; wordcount: fold + inc, no pre-seeding needed
(print(fold(acc w)(dict)(list "a" "b" "a")(inc acc w))) ; => {'a': 2, 'b': 1}Repo layout
terse/ the language package (pure Python 3.10+, stdlib only)
parser.py .terse surface syntax -> AST (tokenizer + recursive descent)
errors.py TerseError hierarchy + the E100–E300 code registry
interp.py tree-walking interpreter: run/run_source, gas sandbox
to_python.py AST -> readable Python transpiler (emits _terse_result)
grammar.gbnf GBNF grammar for constrained decoding
__main__.py CLI: run / transpile / check
SPEC.md the language specification (syntax, ops, semantics, errors)
examples/ 8 sample programs + expected.json (exact expected stdout)
bench/ TTCP benchmark: `python -m bench.run` (8 tasks, token ratios)
tests/ pytest suite (160 tests)
mcp/ MCP server: eval/transpile/tokens/parse as agent tools (stdio)
api/ metered execution API: POST /meter -> HMAC-signed receipts (see notes/metered-api.md)
billing/ Stripe usage reporting: verify receipts, aggregate tokens-saved
per customer per month, report to billing meter events
(see billing/README.md for the honest status)
LICENSE Apache-2.0Key semantics: div is true division; and/or are n-ary and short-circuit; let is letrec for closures and def defines named (recursive) functions; put/push/inc are functional; print returns null; evaluation is gas-metered (E205 on exhaustion). See SPEC.md for the full contract.
Status
v0.3 — 160 tests green. New: fmt string interpolation ((fmt "hi {}" name) — ties Python f-strings, beats cat on sentences; see notes/density-v0.3.md for the measured decision rule). Rejected after measurement: -> threading macro (13 tokens vs 9 nested — BPE doesn't fuse (->). v0.2 density ratios hold: 0.60–1.00× Python tokens across the 8-task benchmark, all stdout MATCH. MCP server (mcp/) exposes eval/transpile/token-count/parse as agent tools over stdio.
Roadmap
TTCP leaderboard — live in
leaderboard/(methodology, scoring tool, static page): models compete on token-efficiency vs Python across the 8 fixed bench tasks, stdout-verified. First-try validity with live repair loops is the defined-but-unmeasured second metric.Paired training corpora: Terse↔Python parallel programs for fine-tuning.
Fine-tuning open models on Terse for direct generation.
More backends: additional transpile targets beyond Python.
License
Apache-2.0 — see LICENSE.
Available Tools
7 toolsterse_alias_clearB
Clear all session $aliases.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It conveys session-scoped blast radius, but omits that the operation is destructive/irreversible, whether it affects only the current session vs persisted aliases, and what happens if no aliases are defined.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with zero waste and the target scope front-loaded. It is arguably too terse for a destructive no-argument operation, but nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter destructive tool with no annotations and no output schema, the description gives the operation and its scope but not the risk profile an agent needs before invoking it. The missing irreversibility warning keeps it at minimum-viable rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to explain and the baseline applies. The description usefully clarifies that the target set is all session aliases rather than a named subset.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Clear") and resource ("session $aliases"), scoped to session rather than global state. It is clearly distinguishable from a define or list operation by verb alone, though it never names or contrasts a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative is given. Nothing tells the agent whether this is a reset between runs, a cleanup step, or how it relates to terse_alias_define/terse_alias_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
terse_alias_defineA
Define a session macro: $alias expands to the given Terse form everywhere it appears as a variable afterwards. Define a repeated subtree once, then write $alias (1-2 tokens) instead of the full form. $names are reserved for aliases — do not bind them with let/def/fn.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | Alias name, e.g. $1. | |
| expansion | Yes | Terse source the alias expands to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that aliases are session-scoped, expand everywhere the $name appears as a variable, and that $names are reserved ('do not bind them with let/def/fn'). It does not cover redefinition/overwrite semantics or error behavior, leaving meaningful gaps for a state-mutating define.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, core definition front-loaded, with the reserved-namespace warning last where it belongs. Mostly efficient, though the middle sentence partly explains the alias feature rather than this tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter tool with full schema coverage and no output schema, the basics are covered and return values need no explanation. However, it omits what happens if an alias already exists or if the expansion is invalid, which an agent would want to know before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented (the $1 example for alias, 'Terse source' for expansion). The description restates that $alias maps to the given Terse form but adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Define a session macro'. The session-scoped framing implicitly separates it from terse_alias_list and terse_alias_clear, but it does not name any sibling to sharpen the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ('Define a repeated subtree once, then write $alias... instead of the full form') that tells the agent when this tool is worthwhile. It stops short of explicit when-not guidance or routing to alternatives like terse_eval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
terse_alias_listA
List the session's defined $aliases and their expansions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies a read-only operation via 'List' and scopes results to the session, which is useful. However, it says nothing about return structure, ordering, or whether it requires an active session, so behavioral disclosure is thin but adequate for a zero-parameter read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Every word (session scope, aliases, expansions) earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial zero-param list tool with no output schema, the description covers what is returned at a high level. A brief note on return shape would make it fully complete, but little is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline of 4 applies. The description correctly adds no parameter detail because none exists to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource ($aliases with their expansions), scoped to the session. It is easily distinguishable from the sibling define/clear tools without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies when to use it (inspecting currently defined aliases), but there is no explicit when/when-not guidance or reference to alternatives like terse_alias_define or terse_alias_clear. Usage is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
terse_evalA
Evaluate Terse source with the tree-walking interpreter. Returns the result value (JSON-safe) and captured print output lines. Session $aliases (see terse_alias_define) are expanded before evaluation.
| Name | Required | Description | Default |
|---|---|---|---|
| gas | No | Evaluation gas limit (default 100000). | |
| source | Yes | Terse source code to evaluate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the return shape (JSON-safe result plus captured print output) and that session $aliases are expanded before evaluation, but it is silent on what happens when the gas limit is exhausted, whether evaluation is isolated/side-effect free, and how errors surface. That is meaningful disclosure but incomplete for an execution tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action, then return shape, then the alias caveat. No filler and each sentence adds distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by describing the return value and print output lines. With no annotations, it partially covers behavior via alias expansion, but omits gas-exhaustion and error semantics. Complete enough for a simple eval tool, though not fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents both 'source' and the 'gas' limit with its default and minimum, so the baseline is 3. The note that session $aliases are expanded before evaluation adds a genuine behavioral nuance about how 'source' is interpreted, but it is the only addition and gas behavior is left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Evaluate Terse source') and names the mechanism ('tree-walking interpreter'), which distinguishes it from sibling tools like terse_parse, terse_transpile, and terse_tokens that operate on source without executing it. An agent can tell this is the execution tool without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb 'evaluate' and reinforced by the reference to terse_alias_define for alias behavior, which tells the agent this tool consumes aliases set up elsewhere. However, there is no explicit when-to-use guidance against terse_parse/terse_transpile or any statement of prerequisites, so the agent must infer the selection logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
terse_parseA
Parse Terse source and return the AST as JSON (tuples become lists). Session $aliases are expanded first.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Terse source code to parse. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses two non-obvious behaviors: JSON conversion turns tuples into lists, and session $aliases are expanded before parsing (a dependency on session state set by terse_alias_define). It says nothing about failure behavior on invalid source or whether parsing mutates session state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the primary action front-loaded, followed by the two caveats that actually change agent expectations (tuple-to-list, alias expansion). No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description correctly characterizes the return value as an AST in JSON and flags the tuple/list representation quirk. The alias-expansion note covers the session-state interaction, leaving only error/edge-case behavior undocumented for a single-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema already fully documents 'source'. The description adds no syntax, format, or encoding detail beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (parse) and resource (Terse source) plus the exact output form (AST as JSON), which cleanly separates it from terse_tokens (lexing), terse_transpile (compilation) and terse_eval (execution) without naming them. An agent can pick this tool from the sibling list on purpose alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the output ('return the AST'), so an agent can infer this is the tool for structural inspection rather than evaluation or transpilation. However, there is no explicit when-to-use, when-not-to-use, or named alternative, and no note about whether parsing is side-effect free.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
terse_tokensA
Count tokens of Terse source with tiktoken cl100k_base; falls back to a ceil(len/4) character estimate when tiktoken is unavailable.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Terse source code to measure. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two behaviorally important facts: the exact encoding used and a deterministic fallback (ceil(len/4)) when tiktoken is unavailable, which directly affects result accuracy. It does not mention performance or that results are approximate in fallback mode in absolute terms, but the key correctness caveat is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the primary behavior (tiktoken cl100k_base) before the fallback caveat. Every clause earns its place, no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, annotation-free, no-output-schema tool, the description covers purpose, encoding, and a fallback path. The only minor gap is that it does not state that the return value is a single integer count, though 'Count tokens' strongly implies it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'source' parameter is already fully documented in the schema. The description adds no syntax, size limits, or format detail beyond restating that the input is Terse source, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (count tokens) and resource (Terse source) and even names the exact tokenizer (tiktoken cl100k_base). This is unmistakably distinct from the parse/transpile/eval/alias siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is offered — nothing about why an agent would count tokens (context budgeting, cost estimation) or any alternative for measuring size. Usage must be inferred entirely from the tool name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
terse_transpileC
Transpile Terse source to readable, executable Python.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Terse source code to transpile. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not say whether transpilation requires aliases to be defined first (the alias_* siblings imply shared state), whether the operation is pure/read-only, what happens on invalid source, or what the returned value looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero padding; nothing is wasted. It is arguably terse to the point of under-specification, but as structure and economy go it is well formed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-input, one-output conversion tool this is nearly sufficient, but with no output schema the description should state what is returned (the Python source text? a status?) and whether alias context affects the result. Those gaps leave the agent guessing about the return contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema already documents 'source' fully. The description adds no syntax, format, or size guidance beyond the schema, which is the expected baseline 3 when structured data does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Transpile') and resource ('Terse source') plus the output target ('readable, executable Python'), which implicitly separates it from terse_eval (which would execute) and terse_parse (which would only parse). It stops short of naming siblings or stating the relationship explicitly, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative tool is mentioned. With terse_eval and terse_parse in the sibling set, an agent is left to infer on its own that this converts source rather than executing or inspecting it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
- First observed
terse_alias_clear - First observed
terse_alias_define - First observed
terse_alias_list - First observed
terse_eval - First observed
terse_parse - First observed
terse_tokens - First observed
terse_transpile
This server cannot be deployed
TDQS
Scored across 7 tools
Each tool targets a distinct operation: eval (run code), parse (produce AST), transpile (emit Python), tokens (count), and three clearly-scoped alias operations. There is no meaningful overlap—parse vs eval vs transpile are different outputs despite all consuming Terse source. An agent can pick the right tool unambiguously.
Every tool carries the terse_ prefix, which gives strong family cohesion. The alias group (terse_alias_list/define/clear) uses a group_verb form while the core operations (terse_eval/parse/transpile/tokens) use prefix_verb, a minor deviation but still readable and predictable.
Seven tools is well within the ideal range and each earns its place: four core language operations plus three alias lifecycle tools. Nothing feels padded or missing at the count level.
The language-tooling domain is well covered: eval, parse, transpile, token counting, plus alias define/list/clear. The one gap is granular alias management—there is no way to remove or inspect a single alias, only clear-all—but this is a minor workaroundable omission.
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- AlicenseAqualityBmaintenanceToken-efficient Python stdio MCP server exposing safe text-file search, reading, and refactoring tools.161Apache 2.0
- AlicenseNot gradedqualityAmaintenanceMCP server providing parser-backed validation, parsing, documentation, and editor assistance for AI agents working with _hyperscript.MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for deterministic, zero-dependency context-window math, enabling token estimation, text truncation, and budget reporting without a tokenizer.MIT
- AlicenseNot gradedqualityBmaintenanceZero-dependency stdio MCP server for token-aware prompt version diffs. Compare prompts or files and get machine-readable token delta reports with confidence labels.MIT