Skip to main content
Glama

Server Details

A hosted LaTeX editor your assistant can actually use. Search 1,019 free templates, create and edit projects, and compile them to PDF on a real TeX Live farm, getting back the PDF or the compile log when a build fails. Thirteen tools behind OAuth 2.1, with nothing to install and nothing to run locally.

Ownership verified
Status
Healthy
Uptime
78.6% over 21 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.9/5.0

Scored across 13 tools

Disambiguation3/5

The set has deliberate compatibility duplicates: search/search_templates and fetch/get_template overlap in purpose, differing mainly in output richness, and compile_latex vs compile_project can confuse an agent. Individual descriptions clarify the intended use, but an agent may still misselect the less rich variant.

Naming Consistency4/5

Most tools follow a clear snake_case verb_noun pattern (list_projects, update_project_file, set_project_compiler). The bare verbs fetch and search break the pattern slightly and are inconsistent with their richer counterparts get_template and search_templates.

Tool Count4/5

13 tools is within the ideal range and covers the server's domain well. Two pairs of compatibility duplicates add mild redundancy but don't hurt navigation.

Completeness4/5

Core lifecycle is present: create/list/read/update project files, compile, set compiler, and template lookup. There is no delete project/file and no binary asset upload, but those are workable gaps or handled in the letX UI.

Available Tools

13 tools
compile_latexCompile LaTeX sourceAInspect

Compile LaTeX source to a PDF without picking a project: pass the main .tex content (and optional extra .tex/.bib files). Runs on letX's real TeX Live compile farm and returns a PDF download link, or the compile errors so you can fix the source and try again. Note: only text files are supported here, so projects with images should be created via create_project and edited in letX. The source is saved to the user's "AI Scratchpad" project.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesNooptional additional text files (chapters, refs.bib, custom .sty)
compilerNoTeX engine: pdflatex (default), xelatex, or lualatex. Leave empty and letX works it out from the packages the document loads.
main_texYesthe full content of main.tex

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

All annotation hints are false, so the description carries the transparency burden. It discloses the execution backend ('real TeX Live compile farm'), the possible outcomes (PDF link or compile errors), and a side effect (source saved to AI Scratchpad). This goes well beyond what the schema or annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, no fluff. The core action is front-loaded, followed by return behavior, limitations, and side effects. Every sentence earns its place and supports correct usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter tool with complete schema coverage and no output schema, the description covers everything an agent needs to call it safely: what it does, what it returns, side effects, and when to use an alternative. No critical gaps are visible.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so a baseline of 3 is appropriate. The description restates that main_tex is the content and files are optional, adding little semantic detail beyond the schema. The 'text files only' note is a useful constraint but is largely redundant with the files parameter description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Compile'), resource ('LaTeX source to a PDF'), and key differentiator ('without picking a project'). This clearly separates it from compile_project and other siblings. The main_tex input is also identified as the primary content to pass.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly frames the tool as standalone ('without picking a project'), implying compile_project for project-based workflows. It also gives a concrete exclusion: 'only text files are supported here, so projects with images should be created via create_project and edited in letX.' This tells an agent exactly when to use an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compile_projectCompile projectBInspect

Compile one of the user's letX projects and return a PDF link, or the compile log errors if it fails.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesproject id from list_projects

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is not read-only, not idempotent, and not destructive. The description adds useful failure behavior disclosure by mentioning that compile log errors are returned on failure. However, it does not disclose potential side effects, compilation duration, or whether this is a long-running operation, which would be valuable for a compile action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the action and resource, and efficiently captures both success and failure outcomes. There is no redundant wording or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description adequately explains the return value on success and failure. It is missing minor context such as expected latency or side effects, but the core information needed to call and interpret the tool is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of the single parameter and already indicates it is the project id from list_projects. The description does not add new parameter-level meaning beyond restating that it compiles a user's project. Baseline of 3 is appropriate given full schema description coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool compiles one of the user's letX projects and returns either a PDF link or compile log errors. This is a specific verb-resource pairing that makes the tool's function understandable. However, it does not explicitly distinguish itself from the sibling compile_latex, so it lacks direct sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus compile_latex or other siblings. It implies it is for letX projects, but does not explicitly state exclusions or alternatives. The agent is left to infer the intended usage context from the name and sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_projectCreate projectAInspect

Create a new letX project from provided LaTeX files (main.tex required). Returns the project id and editor link.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesproject name
filesYesthe project's text files; must include main.tex
compilerNoTeX engine: pdflatex (default), xelatex, or lualatex. Leave empty and letX works it out from the packages the document loads.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the key behavioral outcome: the operation creates a new project and returns the project id and editor link. It also calls out the main.tex requirement. Since annotations are all false and provide little behavioral signal, this description reasonably carries the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no filler. The key action and required input are front-loaded, and the return value is clearly stated in the second sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter create tool with no output schema, the description is nearly complete: it states the inputs, the required file, and the return values. It does not explain routing to create_project_from_template, but that is a usage-guideline nuance rather than a blocking gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are already well documented. The description adds no new meaning beyond reiterating that main.tex is required, which is already stated in the files parameter schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: creating a new letX project from provided LaTeX files. It also distinguishes itself from the sibling create_project_from_template by emphasizing 'from provided LaTeX files', so an agent can tell them apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use this tool: when the agent has LaTeX files to provide, with main.tex required. It does not explicitly mention alternatives or when-not-to-use, but the 'from provided LaTeX files' phrasing implies the distinguishing use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_project_from_templateCreate project from templateAInspect

Create a new letX project for the connected user from a template slug. Returns the project id and an editor link the user can open to continue in letX (live preview, collaboration).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYestemplate slug from search_templates

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide little useful behavioral information since all hints are false. The description adds meaningful context by stating the project is created for the connected user and that the response includes a project id and editor link, which is especially valuable given there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler: it states the action and source in the first sentence and the return value in the second. Key information is front-loaded and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with no output schema, the description adequately covers creation and return values. It could be more complete by mentioning error behavior or explicitly routing the user to search_templates, but these are minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single slug parameter is already documented as a template slug from search_templates. The description does not add significant parameter-level meaning beyond the schema, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action: creating a new letX project from a template slug. It also distinguishes the tool from the sibling create_project by making the template-slug source the defining input.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly say when to use this tool versus alternatives such as create_project. It implies template-based creation but provides no direct usage guidance, exclusions, or conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetchFetch template record (deep research)A
Read-only
Inspect

Fetch one letX LaTeX template record by the id returned from search. (ChatGPT deep-research compatibility tool; get_template gives richer output for other clients.)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesdocument id returned by search

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already provide readOnlyHint=true, so the read-only nature is covered structurally. The description adds useful context about the record type and the id provenance, but does not disclose behavior beyond that. The idempotentHint=false does not contradict the read-only implication because the description never claims idempotency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences with no filler. The core behavior and id provenance are front-loaded, and the parenthetical efficiently handles the sibling distinction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only fetch tool with high schema coverage and a clear sibling comparison, the description covers everything needed to select and invoke it correctly. The agent knows where the id comes from, that it is a read operation, and when to prefer get_template instead.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the only parameter, id, is documented as 'document id returned by search'. The description largely repeats this same information, so it adds little semantic value over the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Fetch'), a specific resource ('one letX LaTeX template record'), and the required identifier source ('by the id returned from search'). It also distinguishes itself from the sibling get_template by clarifying this is the ChatGPT deep-research compatibility variant.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly identifies when fetch is appropriate (as a ChatGPT deep-research compatibility tool) and points to the alternative get_template for other clients. This gives an agent a clear routing decision between fetch and get_template.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_templateGet template detailsA
Read-only
Inspect

Get one LaTeX template's full details by slug (from search_templates): description, author, license, preview image, and the letx.app page.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYestemplate slug from search_templates

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers the safety profile, so the description needs less behavioral disclosure. It adds useful context by specifying the source of the slug and listing the payload fields, but it does not describe error behavior or the exact structure of the response beyond field names.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one focused sentence that front-loads the primary action, identifies the parameter source, and lists the key return fields. There is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only lookup tool with no output schema, the description is complete: it specifies the identifier, its origin, and the returned content. No critical operational detail is missing for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents the single slug parameter with 100% coverage, so the baseline is 3. The description adds only that the slug identifies a LaTeX template and comes from search_templates, which slightly reinforces but does not substantially expand parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'Get one LaTeX template's full details by slug'. It also enumerates the exact fields returned and distinguishes itself from the sibling list tool search_templates by requiring a slug produced by that tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'from search_templates' gives clear context that this tool should be used after searching for templates and with a slug obtained from search_templates. It does not explicitly state when not to use it, but the intended workflow is easy to infer and no alternative detail-fetching tool competes with it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_project_filesList project filesA
Read-only
Inspect

List all documents and uploaded assets (images, data files) in one of the user's letX projects. Use this before read_project_file or update_project_file to get exact paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesproject id from list_projects

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, so the tool's non-mutating nature is established. The description adds useful behavioral context beyond that: it enumerates what gets listed (documents and uploaded assets) and signals that the output is intended to supply exact paths. There is no contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The core action and scope are front-loaded, and the usage guidance follows concisely. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, single-parameter, read-only listing tool, the description covers what is listed, the project scope, and how the result should be used with sibling tools. The absence of an output schema is mitigated by the clear statement that the tool returns exact paths for later read/update operations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, project_id, is fully documented in the input schema as coming from list_projects. With 100% schema description coverage, the tool description does not need to repeat parameter details. It adds only contextual scope about the project, which is adequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: it lists all documents and uploaded assets within a user's letX project. It clearly distinguishes itself from read_project_file and update_project_file by stating it provides exact paths, making the tool's scope and role unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use this tool before read_project_file or update_project_file to get exact paths. This names the relevant alternative tools and gives a clear sequencing rule, so an agent knows exactly when to invoke this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_projectsList projectsA
Read-only
Inspect

List the connected user's letX projects (name, id, last update) so you can read, edit, or compile them.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers the safety profile, and the description adds useful scoping by saying 'connected user's projects.' It does not add further behavioral details like sorting, pagination, or access limitations, but for a simple read-only list this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the action and resource, lists the output fields, and adds a brief usage context. Every part contributes value; nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless, read-only list tool with no output schema, the description is complete: it states what is listed, whose projects, and what fields are returned. The simple nature of the tool means no additional details are needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema fully documents this, so the description does not need to explain parameters. It accurately implies no filtering or arguments are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'List the connected user's letX projects' and identifies the returned fields (name, id, last update). This clearly distinguishes it from siblings like list_project_files and compile_project.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: use this to obtain projects so you can read, edit, or compile them. It does not explicitly name alternatives or exclusion cases, but the intended usage is evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_project_fileRead project fileA
Read-only
Inspect

Read a document (e.g. main.tex, chapters/intro.tex, refs.bib) from one of the user's letX projects.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesdocument path or name, e.g. main.tex or chapters/intro.tex
project_idYesproject id from list_projects

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=false, and the description aligns with readOnlyHint by saying 'Read'. The description adds some context about the scope ('user's letX projects') but does not disclose additional behaviors such as return format, error handling, or whether the file must exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence ending with useful examples. There is no wasted wording, and the core action and resource scope appear immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read operation with two well-documented parameters and a readOnly annotation, the description is mostly sufficient. It could be more explicit about the return value (file contents) and what happens if the path is invalid, but the verb 'Read' plus the examples make the intended behavior reasonably clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters well. The description mostly repeats examples already present in the schema, adding little new semantic value. It does reinforce that paths can be nested and that project_id comes from list_projects, but this is marginal.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Read'), a specific resource ('a document... from one of the user's letX projects'), and gives concrete examples (main.tex, chapters/intro.tex, refs.bib). This clearly distinguishes it from sibling tools like update_project_file or list_project_files by focusing on reading file content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives. It implies read-only access, but it never mentions that update_project_file should be used for modifications or that list_project_files is for browsing file names. No exclusions or alternative routing are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_templatesSearch LaTeX templatesA
Read-only
Inspect

Search letX's library of 1000+ free LaTeX templates (university theses, IEEE/ACM/Elsevier/Springer journal formats, CVs and resumes, posters, presentations, reports). Returns matching templates with their slug, category and preview link. Use get_template for full details.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYeswords to match against template names, descriptions, tags and categories
categoryNooptional category slug filter, e.g. cvs-resumes, journal-articles, universities, posters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds useful context about what the tool returns (slug, category, preview link) but does not describe result limits, ordering, or matching behavior. This is acceptable for a simple search tool but adds only moderate behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-load the action and scope, then describe the return fields, then route to the alternative. Every sentence earns its place with no repetition of structural annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity search tool with fully documented parameters and read-only annotations, the description is complete. It explains what results look like even though there is no output schema, and it points to get_template for follow-up details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both 'query' and 'category' already well-documented in the input schema. The description mentions template categories and return fields but does not add meaningful parameter-level meaning beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action ('Search') and the resource ('letX's library of 1000+ free LaTeX templates'), and lists concrete types of templates to make scope obvious. It explicitly names get_template as the complement for full details, distinguishing this discovery/search tool from the detail-retrieval sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states that this tool is for searching and discovering templates, then explicitly instructs to 'Use get_template for full details.' This gives an agent a clear branching rule: search here first, then fetch details with get_template.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_project_compilerSet the TeX engineA
Destructive
Inspect

Choose which TeX engine a project builds with: pdflatex, xelatex or lualatex. Use xelatex or lualatex for documents that load fontspec, unicode-math, polyglossia or xeCJK (custom system fonts and non-Latin scripts); use lualatex for anything calling \directlua or luacode. letX works this out on its own when a project is created, so reach for this when that guess needs overriding.

ParametersJSON Schema
NameRequiredDescriptionDefault
compilerYespdflatex, xelatex or lualatex
project_idYesproject id from list_projects

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag the tool as destructive (destructiveHint=true), and the description reinforces this by framing it as overriding letX's automatic engine selection. It adds useful context beyond annotations: the tool exists to correct an automatic guess and the choice of compiler is tied to document feature requirements. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: main action with valid values, concrete selection rules, and a clear 'when to avoid' signal. Information is front-loaded and free of fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two parameters, no output schema, and annotations covering the destructive nature, the description is complete. It covers purpose, valid input values, selection criteria, and when to call. Nothing needed for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema already documents both parameters with 100% coverage, so the baseline is 3. The description adds substantive value by mapping compiler values to concrete use cases such as fontspec, unicode-math, polyglossia, xeCJK, and \directlua, helping the agent choose the right value. It doesn't add much for project_id, but that parameter is trivially sourced from list_projects.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Choose which TeX engine a project builds with' and enumerates the exact options (pdflatex, xelatex, lualatex). It clearly differentiates from sibling compile tools by focusing on build settings rather than compilation. The purpose is unambiguous and distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly provides when-to-use guidance: xelatex/lualatex for fontspec, unicode-math, polyglossia, xeCJK; lualatex for \directlua or luacode. It also states when not to call it, since letX auto-detects on creation and this tool is only for overriding that guess. This is model usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_project_fileWrite project fileA
Destructive
Inspect

Create or replace a document in one of the user's letX projects: if the path exists its content is replaced (a version snapshot is saved first, so the change can be undone from letX's history); if it doesn't exist the file is created. Prefer reading the file first and preserving everything the user didn't ask to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesdocument path, e.g. main.tex or chapters/intro.tex; created if it doesn't exist
contentYesthe FULL new content of the document (it replaces the current content)
project_idYesproject id from list_projects

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the destructiveHint annotation by explaining that 'a version snapshot is saved first, so the change can be undone from letX's history.' It also discloses the replace-vs-create behavior and emphasizes that content replaces the full document. This is exactly the kind of behavioral context an agent needs for a destructive write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. It front-loads the core purpose, then adds the essential behavioral details and a practical caution. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with three simple parameters and no output schema, the description is complete: it states what happens on create vs replace, confirms undoability via snapshots, and warns about preserving unrelated content. Combined with full schema coverage and the destructive hint annotation, an agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully explains project_id, path, and content. The description reinforces that content is the 'FULL new content' and that path is created if missing, but it does not add substantial new parameter-level meaning. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Create or replace a document in one of the user's letX projects.' It then specifies the two cases—existing path replaced, non-existing path created—which precisely distinguishes this from sibling tools like read_project_file or create_project. The verb-plus-resource framing is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear operational guidance: 'Prefer reading the file first and preserving everything the user didn't ask to change.' This implies the correct workflow and cautions against overwriting content. It does not explicitly name read_project_file or state 'use this tool when modifying a file,' but the context is clear enough.

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.

  1. 13 tool updates
    • First observedcompile_latex
    • First observedcompile_project
    • First observedcreate_project
    • First observedcreate_project_from_template
    • First observedfetch
    • First observedget_template
    • First observedlist_project_files
    • First observedlist_projects
    • First observedread_project_file
    • First observedsearch
    • First observedsearch_templates
    • First observedset_project_compiler
    • First observedupdate_project_file

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to compile LaTeX source into publication-quality PDFs through MCP, with usage tracking and reusable LaTeX templates for authenticated plans.
    1
    5 npm
    MIT
  • F
    license
    A
    quality
    F
    maintenance
    Enables AI assistants to create, edit, and validate LaTeX documents through a standardized protocol with support for multiple document classes and package management. It provides tools for document structure analysis and file organization to streamline the generation of professional academic papers.
    8
    18
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources