Skip to main content
Glama
Zmokizmoghi

orca-profiles-mcp

by Zmokizmoghi

orca-profiles-mcp

MCP-сервер, который читает и редактирует профили OrcaSlicer. Он разворачивает всю цепочку inherits и показывает, какое звено задало каждое значение.

Что делает

Профиль OrcaSlicer хранит только свои отличия от родителя. Открытия файла недостаточно, чтобы узнать скорость внешней стенки: значение может прийти от родителя, от родителя родителя или из встроенных значений по умолчанию. Этот сервер проходит цепочку до корня, вычисляет эффективные значения и сохраняет их происхождение.

Он обрабатывает те части Orca, которые ломают наивные считыватели:

  • родители разрешаются по имени, между вендорами — нить Sovol наследует от OrcaFilamentLibrary;

  • отсутствующий родитель Generic … заменяется на Generic <material> @System, а переименованные профили находятся через их список renamed_from;

  • векторы, связанные с вариантами экструдера, объединяются поэлементно, включая маркер nil, означающий «сохранить здесь значение родителя»;

  • дочерний профиль может объявлять больше экструдеров, чем родительский — тулченджер поверх профиля машины с одним экструдером — и оба экструдера сохраняют свои значения;

  • ключи, не относящиеся к типу профиля, отбрасываются, потому что Orca тоже их отбрасывает; о них сообщается, а не применяются молча.

Related MCP server: renovate-mcp

Установка

cd ~/job/orca-profiles-mcp
uv sync

Зарегистрируйте в Claude Code:

claude mcp add orca-profiles -- uv --directory ~/job/orca-profiles-mcp run orca-profiles-mcp

Инструменты

Инструмент

Назначение

get_setup

обнаруженные корни, версия Orca, вендоры, выбранные пресеты

list_profiles

поиск по типу, имени, вендору, источнику

get_profile

профиль в режиме raw / resolved / traced

get_chain

цепочка наследования до корня

explain_key

откуда взялось конкретное значение

find_children

какие профили наследуют от этого

diff_profiles

сравнить два профиля

compare_with_upstream

сравнение с репозиторием OrcaSlicer

validate

сломанные inherits, циклы, неизвестные ключи, избыточные дельты

check_deltas

проверить развёртывание по дельтам, которые записала сама Orca

сообщает об избыточных ключах и необъяснимых длинах векторов отдельно

set_values

установить значения с пересчётом дельт

create_profile

создать пользовательский профиль

rename_profile, delete_profile

переименовать и удалить

normalize_profile

удалить ключи, идентичные родительским

Значения возвращаются ровно в том виде, в каком они хранятся в файлах: "0.20" остаётся "0.20", а "100%" остаётся процентным значением. Движок нормализует оба при нарезке; этот сервер — нет, поэтому вы читаете ровно то, что указано в профиле, и записывается обратно без изменений.

Запись профилей

Ваши собственные профили можно редактировать свободно. Изменение системного или встроенного профиля требует force=true: такие файлы принадлежат библиотеке вендора, следующее обновление профилей восстановит их, и каждый потомок унаследует изменение.

Запись выполняется через временный файл и атомарное переименование, поэтому прерванная запись не может обрезать профиль; сначала рядом с файлом создаётся резервная копия (backup=false отключает её). Значения проверяются до записи чего-либо: ключ, принадлежащий другому типу профиля, вектор там, где движок ожидает скаляр, или число там, где формат требует строку, — отклоняются, а не сохраняются и молча отбрасываются Orca. Настройки, которые ваш закреплённый снимок не распознаёт, переносятся без изменений, поэтому профиль, записанный более новой Orca, не теряет их.

OrcaSlicer читает профили при запуске и переписывает их при выходе. Изменения, сделанные во время работы приложения, будут перезаписаны — сначала закройте Orca.

Как проверяется корректность

CLI Orca не может проверить наследование. --export-settings возвращает значения по умолчанию движка плюс ключи, присутствующие в переданных ему файлах, и никогда не обходит inherits; выбор пресетов через OrcaSlicer.conf не активирует их; передача всей цепочки как списка файлов отклоняется как дублирующийся конфигурационный файл. Все три варианта были опробованы на версии 2.4.2.

Что Orca действительно оставляет после себя — это свидетельство её собственного развёртывания: когда она сохраняет пользовательский профиль, она хранит минимальную дельту относительно полностью развёрнутого родителя. Таким образом, каждый профиль, записанный Orca, — это зафиксированный ответ. check_deltas пересчитывает эти дельты и сравнивает — несовпадение означает, что резолвер разворачивает родителя иначе, чем движок.

Именно это проверяет tests/test_smoke.py против установленной библиотеки, и именно так был найден дефект вектора тулченджера.

Ключи, сохранённые, несмотря на то что уже совпадают с родителем, сообщаются отдельно: это безвредные остатки с момента до изменения родителя, а не ошибки резолвера.

Обновление снимка движка

Значения по умолчанию движка, наборы ключей вариантов и списки ключей по типам сохраняются из установленной Orca в src/orca_profiles_mcp/data/engine-snapshot.json, привязанном к тегу версии. После обновления OrcaSlicer:

uv run python scripts/build_snapshot.py
uv run pytest

Тесты

uv run pytest

Четыре уровня:

  • модульные тесты на миниатюрной библиотеке фикстур, по одному на каждый краевой случай — наследование между вендорами, запасной вариант Generic, renamed_from, циклы, отсутствующие родители, векторы с шагом 1 и шагом 2, элементы nil;

  • циклы записи: чтение → запись без изменений → файл побайтно идентичен;

  • сквозные тесты, которые запускают упакованную точку входа как подпроцесс и управляют ею через MCP stdio, покрывая регистрацию инструментов, полный цикл создания/редактирования/проверки/удаления и распространение ошибок;

  • проверки против установленной библиотеки, включая описанную выше проверку дельт.

Тесты, использующие реальную библиотеку, пропускают себя, когда отсутствует каталог данных Orca; всё остальное выполняется на фикстурах.

Документы

  • Проектирование: docs/specs/2026-08-17-orca-profiles-mcp-design.md — включает то, что чтение исходников OrcaSlicer установило о формате профилей, и что исключили эксперименты с CLI

  • План реализации: docs/plans/2026-08-17-orca-profiles-mcp.md

Лицензия

AGPL-3.0, как и сам OrcaSlicer. Этот проект не содержит кода OrcaSlicer, но его логика наследования является построчным переносом Preset.cpp и PrintConfig.cpp, а снимок движка содержит значения по умолчанию и списки ключей, извлечённые из этого исходного кода.

Не аффилирован с проектом OrcaSlicer и не одобрен им.

Available Tools

15 tools
check_deltasB

Verify inheritance expansion against the deltas Orca itself wrote: for every profile, the delta is recomputed and compared with the file. A mismatch means the resolver expands the parent differently than the engine did; redundant keys are reported separately and are harmless

NameRequiredDescriptionDefault
scopeNouser

TDQS

B3.4/5.0
Behavior4/5

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

The description meaningfully explains what happens: deltas are recomputed, compared, mismatches indicate resolver/engine divergence, and redundant keys are reported separately and are harmless. Since no annotations are present, this behavioral disclosure is valuable, though side effects or read-only status are not explicitly stated.

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

Conciseness4/5

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

The description is one dense sentence with no filler and front-loads the main purpose. The additional clause about mismatch meaning and harmless redundant keys is useful, though the phrasing is slightly dense.

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

Completeness2/5

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

With no output schema and no annotations, the description should explain return format and parameter effects. It explains core semantics well but leaves scope undocumented and does not describe what the tool actually returns or prints.

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

Parameters2/5

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

The only parameter, scope, is entirely absent from the description. The schema provides a name, type, and default, but not the accepted values or how scope affects behavior. With 0% schema description coverage, the description should compensate but does not.

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—verify inheritance expansion against the deltas Orca wrote—and explains what the verification does and what a mismatch means. It differentiates itself from siblings like validate or diff_profiles by focusing on whether the resolver expansion matches Orca's own delta records.

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?

There is no explicit guidance on when to use this tool versus alternatives like validate, compare_with_upstream, or diff_profiles. The context is implied by the description but no exclusions or selection criteria are provided.

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

compare_with_upstreamC

Compare a profile against its version in the OrcaSlicer repository

NameRequiredDescriptionDefault
refNomain
nameYes
typeYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether the tool performs a network fetch, whether it can fail when the profile is missing upstream, what happens if the ref is invalid, or what the comparison output looks like. 'Compare' implies a read-only operation, but the description leaves important behavioral aspects unspecified.

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 concise sentence with no filler or repetition. It front-loads the action and object, and every word contributes to the core meaning. Conciseness here is excellent, though the content is incomplete in other dimensions.

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

Completeness1/5

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

With three parameters, no schema descriptions, no annotations, and no output schema, the description must carry substantial context. It provides only a one-line summary of the operation. An agent has no way to know how to fill the parameters, what the outcome will be, or how this fits with sibling tools. This is inadequate for safe and correct invocation.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not compensate by explaining the parameters. The meaning of 'type', 'name', and 'ref' is not clarified beyond raw titles, and no guidance is given about how they identify the profile or the upstream version. The description only mentions 'a profile', which is insufficient for three undocumented parameters.

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 states a clear verb and resource: compare a profile against the version in the OrcaSlicer repository. The 'against its version in the OrcaSlicer repository' phrasing helps distinguish it from the sibling diff_profiles, which is likely a more generic profile comparison. It could be slightly more explicit about exactly which profile identifier is used, but the core purpose is clear.

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 alternatives like diff_profiles, get_profile, or check_deltas. It does not mention prerequisites, when a comparison is appropriate, or when to prefer another tool. The intended context is only implied by the name and brief description.

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

create_profileC

Create a user profile inheriting from the given one

NameRequiredDescriptionDefault
nameYes
typeYes
valuesYes
inheritsYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full burden for behavioral disclosure, but it only says the profile is created and inherits from another. It does not explain whether the new profile copies values, references the parent, merges CASECAPS, requires any permissions, or what happens if the parent path is invalid.

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 with no wasted words. It is front-loaded with the core action and resource, and the inheritance behavior is included without padding.

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

Completeness2/5

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

For a creation tool with four required parameters, a nested object, no output schema, and no annotations, the description is far too thin. An agent would not know the expected shape of 'values', how inheritance works, or whether the operation returns the created profile or merely confirms success.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate by explaining what type, name, inherits, and values mean. It only hints at the 'inherits' parameter through 'inheriting from the given one,' leaving the semantics of 'values' and 'type' entirely unexplained.

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 states a clear action—create—and a clear resource—a user profile—while adding the distinctive inheritance relationship via 'inheriting from the given one.' It is more informative than the bare tool name, but it does not explicitly differentiate from siblings like set_values or delete_profile beyond the obvious create semantics.

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?

No guidance is given about when to use this tool versus alternatives such as set_values, normalize_profile, or get_profile. The reader has to infer that creation is the intended use; there are no prerequisites, no exclusions, and no mention of whether the 'given one' must already exist.

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

delete_profileB

Delete a profile; deleting outside your own profiles needs force=True, and cloud-synced ones keep a flagged .info

NameRequiredDescriptionDefault
nameYes
typeYes
forceNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It reveals two meaningful behaviors: the force requirement for profiles outside your own, and the leftover flagged .info for cloud-synced profiles. It does not mention irreversibility, permission errors, or what happens on success, which would strengthen transparency.

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 delivers the core purpose and two important behavioral caveats without filler. The information is front-loaded and every clause adds value.

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

Completeness2/5

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

The description covers the deletion action and the force rule, but it omits semantics for two required parameters, has no output schema, and lacks any note about confirmation or reversibility. For a destructive tool with no annotations, this is a meaningful gap in what an agent needs to call it correctly across scenarios.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It explains when force=True matters, but leaves the required `type` and `name` parameters undocumented. An agent would not know what values are valid for `type` or how `name` should be formatted.

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 states a clear action ('Delete') and resource ('profile'), with additional nuance about force and cloud-synced profiles. It does not explicitly contrast with sibling tools, but no sibling is a delete operation, so the core purpose 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 Guidelines3/5

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

The force condition ('deleting outside your own profiles needs force=True') gives useful context for a specific scenario, and the overall use case is implied. However, it does not explicitly state when not to use this tool or point to alternatives such as rename_profile or create_profile.

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

diff_profilesB

Compare two profiles by effective values (mode=resolved) or by their stored deltas (mode=raw)

NameRequiredDescriptionDefault
aYes
bYes
modeNoresolved
typeYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral transparency burden. It does disclose the key behavioral distinction between mode=resolved (effective values) and mode=raw (stored deltas), which is useful. However, it does not state whether the operation is read-only, what the output shape is, or any error behavior.

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 core purpose and then adds the key mode distinction. Every word earns its place, and it is efficiently sized for the information it conveys.

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

Completeness2/5

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

The tool has no annotations, no output schema, and zero schema description coverage, so the description must be self-sufficient. It explains the mode semantics but fails to address the required 'type' parameter, profile identifier format, or what the returned diff looks like. An agent could not reliably call this tool correctly without additional information.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for all four parameters. It adds meaning for 'mode' by explaining resolved vs raw, and it clarifies that a and b are two profiles, but the required 'type' parameter is completely unexplained. This is a significant gap.

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 a specific action ('Compare two profiles') and the two comparison modes, which distinguishes it from the raw name. However, it does not explicitly distinguish it from sibling tool compare_with_upstream, so it falls short of full 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 implies the tool is for comparing two profiles, but it gives no guidance on when to choose this tool versus alternatives like compare_with_upstream or check_deltas. There are no exclusions, prerequisites, or explicit when-to-use/when-not-to-use cues.

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

explain_keyB

Where a key's value came from: originating link, overridden values, engine default

NameRequiredDescriptionDefault
keyYes
nameYes
typeYes

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It does reveal that the tool produces provenance information and indicates the categories of origin it reports. It does not state whether the operation is read-only, what the return format is, or how it handles unresolved keys, leaving notable gaps.

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

Conciseness4/5

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

The description is a single efficient sentence that front-loads the core purpose and uses a colon to enumerate the relevant provenance sources. It is concise and easy to parse, though the brevity comes at the cost of omitting parameter and usage details.

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

Completeness2/5

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

The tool has three required parameters, no annotations, and no output schema, so the description must provide substantial guidance. It explains the general purpose but not how to fill in the parameters, what the response looks like, or how this tool relates to siblings such as get_chain or compare_with_upstream. An agent would struggle to invoke it correctly without additional context.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needs to explain the parameters, but it only gives meaning to 'key' by implying it refers to the key whose value is being explained. The 'type' and 'name' parameters remain completely unexplained, making it unclear how they identify the context or profile containing the key.

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 identifies the tool as explaining a key's value provenance and names the categories involved: originating link, overridden values, and engine default. This distinguishes it from siblings like get_profile or diff_profiles, which perform different operations. It lacks an explicit verb, but the intent 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 Guidelines3/5

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

The intended use is implied: use it when you need to understand why a key has a particular value or where that value came from. However, there is no explicit guidance on when not to use it or which sibling alternatives might be more appropriate for related tasks.

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

find_childrenC

Profiles inheriting from this one. Check before editing shared profiles

NameRequiredDescriptionDefault
nameYes
typeYes

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. 'Check before editing shared profiles' implies a read-only, non-destructive query, which is useful, but the description does not specify whether inheritance is direct or transitive, what the returned data looks like, or any additional behavior an agent should expect.

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

Conciseness4/5

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

The text is extremely short, with no filler, and the use-case directive follows the functional phrase immediately. The main structural weakness is the vague referent 'this one,' which adds ambiguity despite the concise format.

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

Completeness2/5

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

Given two unnamed parameters, no annotations, and no output schema, the description is too thin for an agent to call the tool confidently. It fails to explain how to populate name/type, what result to expect, and whether the child set is recursive, so the pre-edit check hint alone is incomplete.

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

Parameters1/5

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

The input schema exposes two required strings, 'name' and 'type', with zero descriptions, and the tool description never mentions either parameter. At 0% schema coverage, the description needed to compensate by explaining what values are valid, but it provides no parameter semantics at all.

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

Purpose3/5

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

The description identifies the resource as 'profiles inheriting from this one,' which tells the agent that the tool deals with descendant profiles, but it lacks an explicit verb such as 'find' or 'list' and reads as a sentence fragment. It does not distinguish this tool from sibling tools like list_profiles or get_chain, so the purpose is only inferable rather than precisely stated.

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?

'Check before editing shared profiles' gives a clear and actionable context: the tool should be invoked as a safety pre-check before modifications. It does not, however, name alternatives or state when this tool should not be used, so it stops short of full usage guidance.

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

get_chainC

The inheritance chain to its root, with how each link was resolved

NameRequiredDescriptionDefault
nameYes
typeYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does disclose that the output includes how each link was resolved, which is a useful behavioral detail, but it does not indicate whether the operation is read-only, what inputs it requires, or any side effects, errors, or auth requirements.

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 concise sentence with no filler, and the core resource is front-loaded. It is appropriately sized for a simple two-parameter retrieval tool.

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

Completeness2/5

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

For a tool with two required but undocumented parameters and no output schema, a one-sentence description of the result is insufficient. It does not explain what type and name refer to, how the chain is rooted, or how this relates to profiles and siblings.

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

Parameters1/5

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

Schema description coverage is 0% and the description never mentions 'type' or 'name'. The agent cannot infer what these parameters identify or what values are expected, so the description completely fails to compensate for the lack of schema documentation.

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 identifies a specific resource—the inheritance chain to its root—and adds a useful detail about how links were resolved. The action is implied by the tool name 'get_chain', and the chain/root framing distinguishes it from siblings like get_profile or find_children, though no explicit verb is present.

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?

No guidance is given about when to use this tool versus alternatives such as find_children or explain_key. There is no mention of prerequisites, input meaning, or situations where this tool is preferred or not appropriate.

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

get_profileC

A profile with inheritance expanded. mode: raw — file contents, resolved — effective values, traced — values with provenance. Engine defaults are excluded unless include_defaults is set

NameRequiredDescriptionDefault
keysNo
modeNoresolved
nameYes
typeYes
groupNo
limitNo
include_defaultsNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations available, the description carries the behavioral burden. It does disclose meaningful behavior: inheritance is expanded, mode changes what is returned, and engine defaults are excluded by default. However, it does not describe the output structure, how keys and limit affect results, or what errors/cases might occur.

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

Conciseness4/5

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

The description is a single compact sentence that front-loads the core purpose and packs mode semantics plus default-handling behavior efficiently. It has no filler, though it could have used a clearer subject-verb structure.

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

Completeness2/5

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

For a tool with seven parameters, no annotations, no output schema, and many siblings, the description is too thin. It omits how the profile is located, what keys and limit do, what the returned data looks like, and when this tool should be preferred over related tools.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for all seven parameters. It only explains mode and include_defaults; keys, name, type, group, and limit are left unexplained, which is insufficient for confident invocation.

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 identifies the tool as returning a profile with inheritance expanded and distinguishes its three modes (raw, resolved, traced), which separates it from sibling tools like list_profiles or normalize_profile. It lacks an explicit verb like 'returns', but the intent 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 Guidelines2/5

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

The description explains mode choices and the include_defaults behavior, but it never says when to choose get_profile over the many sibling tools, such as get_chain, explain_key, or diff_profiles. 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.

get_setupB

Discovered Orca profile roots, application version, vendors, selected presets

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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 does convey that the tool surfaces discovered setup data, implying a read-only inspection, but it does not explicitly state side effects, caching, discovery behavior, or error/failure characteristics.

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

Conciseness4/5

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

The description is one compact line with no filler and it lists exactly the relevant output domains. However, it reads as a fragment rather than a complete instruction, so it could be slightly clearer without adding length.

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 zero-parameter tool with no output schema, listing the returned data categories is nearly sufficient for correct invocation. It could be more explicit about the shape or grouping of the returned setup object, but nothing essential is missing for an agent deciding to call it.

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 input schema is empty with zero parameters, so there is nothing for the description to add about parameters. The baseline of 4 applies because parameter semantics are not applicable here.

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 names a specific resource: discovered Orca setup data including profile roots, application version, vendors, and selected presets. This makes the purpose reasonably clear and implicitly distinct from profile-specific siblings, although the description lacks a direct verb such as 'returns' or 'gets'.

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?

There is no guidance about when to call get_setup versus alternatives like list_profiles or get_profile. No conditions, prerequisites, or exclusions are mentioned, so the agent must infer usage from the tool name and the listed data fields.

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

list_profilesC

Search profiles by type, name, vendor and source

NameRequiredDescriptionDefault
typeNo
limitNo
queryNo
sourceNo
vendorNo
compatible_withNo
include_abstractNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavior disclosure. 'Search profiles' implies a read-only listing operation, which is reasonably clear, but the description does not mention output shape, result limits, default behaviors like include_abstract=false, or whether filters are exact or partial matches.

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

Conciseness4/5

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

The description is a single concise, front-loaded sentence with no filler or redundant phrasing. It is efficient, though it omits several parameters and usage details.

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

Completeness2/5

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

The tool has 7 optional parameters, no output schema, and no annotations, yet the description covers only a subset of the filtering capabilities. There is no explanation of how query relates to name, what compatible_with does, how limit behaves, or what the response will contain.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning for type, 'name' (which is not an actual parameter), vendor, and source, but omits limit, compatible_with, and include_abstract, and does not explain the role of query. This is partial and slightly misleading due to 'name' not appearing in the schema.

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 a search action over profile resources and lists filtering dimensions: type, name, vendor, and source. It implies a listing/search tool distinct from singular operations like get_profile, but it does not explicitly differentiate itself from siblings.

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?

No guidance is provided about when to use this tool versus alternatives such as get_profile, diff_profiles, or find_children. The description gives no exclusions, prerequisites, or context to help an agent choose this tool over related profile tools.

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

normalize_profileC

Drop keys whose values are identical to the parent's

NameRequiredDescriptionDefault
nameYes
typeYes
forceNo
backupNo

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosing behavior, but it only says keys are dropped. It does not mention that this modifies profiles in place, whether changes are reversible, what backup/force do, what happens to child profiles, or any side effects—so a mutating tool is under-disclosed.

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

Conciseness3/5

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

The sentence is grammatically tight and front-loaded with the main action, with no filler. However, it is so terse that it sacrifices necessary context about parameters and effects, making it under-specified rather than appropriately complete.

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

Completeness2/5

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

The tool has four parameters, no output schema, and no annotations, yet the description only covers the core drop behavior. It omits what 'parent' means, how force/backup alter execution, what happens to the profile, and what the result looks like, so the definition is not complete enough for reliable invocation.

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

Parameters1/5

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

Schema description coverage is 0%, and the description mentions none of the four parameters: name, type, force, or backup. It does not explain how these parameters affect the normalization behavior, leaving the agent to guess.

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 gives a specific verb ('drop') and the object ('keys whose values are identical to the parent's'), which clearly conveys a normalization/removal operation and distinguishes it from sibling tools like get_profile or delete_profile. However, it never explicitly names 'profile' or defines what 'parent' refers to, so a bit of inference is required.

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?

No guidance is provided about when to use normalize_profile versus alternatives such as diff_profiles, check_deltas, or compare_with_upstream. The use case is only implied by the operation described, with no explicit context or exclusions.

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

rename_profileC

Rename a user profile

NameRequiredDescriptionDefault
nameYes
typeYes
new_nameYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure, but it only states the action 'rename.' It does not disclose side effects, whether the operation is reversible, uniqueness constraints on new_name, or failure behavior for nonexistent profiles.

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

Conciseness3/5

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

The single sentence is concise and front-loaded, and there is no redundant text. However, brevity comes at the cost of substance, so it is merely minimally structured rather than well-crafted.

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

Completeness2/5

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

The tool has no annotations, no output schema, and three required parameters, so the description should compensate; it does not. An agent cannot confidently determine the meaning of type or the expected result/errors from this definition alone.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must explain the three parameters. It defines none of them: name, type, and new_name are left for the agent to guess, and type is especially ambiguous.

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?

States a specific verb ('rename') and resource ('user profile'), which clearly sets it apart from sibling operations like create_profile, delete_profile, or list_profiles. It doesn't explicitly contrast itself with normalize_profile, but the rename operation is unambiguous enough for selection.

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?

No guidance on when to use rename_profile rather than create_profile, delete_profile, or normalize_profile. There is no mention of prerequisites such as the profile existing, whether the rename is applied to an active setup, or how name/type identify the target.

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

set_valuesA

Set profile values. The delta against the parent is recomputed automatically and the paired .info is updated. Editing a system or bundled profile affects every descendant and needs force=True

NameRequiredDescriptionDefault
nameYes
typeYes
forceNo
backupNo
valuesYes

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does well: it reveals automatic delta recomputation, paired .info updates, and the cascading effect on descendants when editing system or bundled profiles. It does not cover backup behavior or reversibility, but the key side effects are disclosed.

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 dense sentences with no filler. The main action is front-loaded, and the force qualification is placed in the second sentence without unnecessary explanation.

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

Completeness2/5

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

The tool has 5 parameters, a nested values object, no output schema, and no annotation coverage. The description explains core side effects but leaves too much unresolved for correct invocation, especially the meanings of type, name, backup, and the expected structure of values.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain the 5 parameters, but it only adds meaning for force=True. It does not explain what type means, how name selects a profile, what shape values should take, or what backup does. This is a significant gap for required parameters.

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-resource pair ('Set profile values') and the word 'Editing' makes clear this modifies existing profiles. It is readily distinguished from siblings like create_profile, rename_profile, delete_profile, and read-oriented tools such as get_profile or list_profiles.

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?

No explicit guidance is given for when to use this tool versus alternatives such as create_profile or normalize_profile. The force=True note is a requirement for system/bundled profiles, not a tool-selection condition, and no exclusions or fallback tools are mentioned.

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

validateC

Integrity check: broken inherits, cycles, unknown keys, redundant deltas, name collisions

NameRequiredDescriptionDefault
scopeNouser

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavior. It lists what kinds of integrity problems are checked, but does not state whether the tool mutates anything, what kind of output it returns, whether it fails fast, or how results are reported.

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

Conciseness4/5

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

The description is brief, scannable, and front-loaded with the core purpose. The colon-delimited list of checks conveys a lot in a compact form, though it omits some necessary operational context.

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

Completeness2/5

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

For a tool with only one optional parameter, some brevity is acceptable, but the description leaves major ambiguities: what does 'scope' control, what does a successful or failed validation look like, and is the tool read-only? The agent would need to introspect or guess to invoke it correctly in a meaningful way.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention the single optional 'scope' parameter at all. The schema only gives a default of 'user', leaving the agent without any understanding of what scope values are valid or how scope affects the validation.

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 identifies a specific operation—'integrity check'—and enumerates concrete validation dimensions: broken inherits, cycles, unknown keys, redundant deltas, and name collisions. This is clearer than a generic 'validate' and helps distinguish it from sibling tools like check_deltas or normalize_profile, though it never names the resource being validated.

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?

There is no guidance about when to run validate versus related sibling tools such as check_deltas, normalize_profile, or compare_with_upstream. The description gives no context about prerequisites, exclusions, or the typical situation in which this tool should be selected.

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. 15 tool updatesv0.1.0
    • First observedcheck_deltas
    • First observedcompare_with_upstream
    • First observedcreate_profile
    • First observeddelete_profile
    • First observeddiff_profiles
    • First observedexplain_key
    • First observedfind_children
    • First observedget_chain
    • First observedget_profile
    • First observedget_setup
    • First observedlist_profiles
    • First observednormalize_profile
    • First observedrename_profile
    • First observedset_values
    • First observedvalidate

TDQS

B3.3/5.0

Scored across 15 tools

Disambiguation4/5

Most tools have clearly distinct purposes: get_profile expands inheritance, get_chain shows the chain, explain_key traces a single key's origin. However, validate and check_deltas both verify integrity and could be confused; diff_profiles and compare_with_upstream both compare but to different targets. Descriptions are detailed enough to resolve ambiguity.

Naming Consistency5/5

All tool names follow a consistent snake_case imperative verb-noun pattern (get_setup, list_profiles, set_values, create_profile). Even compound names like compare_with_upstream and check_deltas fit the pattern. No mixed conventions or vague verbs.

Tool Count5/5

15 tools is well-scoped for a profile management server, covering discovery, inspection, mutation, validation, and comparison. Each tool addresses a distinct need without unnecessary duplication.

Completeness5/5

The tool surface provides full lifecycle coverage: create, read (multiple views), update, delete, rename, plus validation, diffing, and impact analysis (find_children). Missing operations like import/export are not core to the domain, and the set appears complete for effective profile management.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers