Skip to main content
Glama

hermes-mcp

MCP 서버로, Hermes(HashiCorp/IBM 문서 관리 시스템)용입니다. AI 어시스턴트(예: Bob)를 Hermes 인스턴스에 연결하여 채팅에서 직접 문서를 검색, 탐색, 조회할 수 있습니다.

사전 요구 사항

  • Node.js v18 이상

  • 실행 중인 Hermes 인스턴스(SharePoint 백엔드)에 대한 액세스 권한

  • 유효한 Hermes 세션 쿠키(인증 참조)

Related MCP server: Rememberizer MCP Server for Common Knowledge

설치

git clone https://github.com/HarutuneDavisIBM/hermes-mcp.git
cd hermes-mcp
npm install
npm run build

컴파일된 서버는 build/index.js에 있습니다.

인증

Hermes(SharePoint 배포)는 AWSELBAuthSessionCookie-0라는 이름의 AWS Application Load Balancer 세션 쿠키를 통해 인증합니다. 이 쿠키는 브라우저에서 로그인할 때 자동으로 설정됩니다.

세션 쿠키를 가져오는 방법

  1. Hermes 인스턴스(예: https://hermes-sharepoint.hashicorp.services)를 열고 로그인합니다.

  2. DevTools를 엽니다(Mac의 경우 Cmd+Option+I, Windows의 경우 F12).

  3. Network 탭으로 이동하여 아무 /api/v2/ 요청을 클릭합니다.

  4. Request Headers에서 cookie 필드를 찾습니다.

  5. AWSELBAuthSessionCookie-0=... 값을 복사합니다(이름을 포함한 해당 쿠키 하나만).

참고: 이 세션 쿠키는 주기적으로 만료됩니다(보통 몇 시간 후). 위 단계를 반복하여 새로고침해야 합니다.

구성

MCP 클라이언트의 구성 파일에 서버를 추가하세요. Bob의 경우 이 파일은 ~/.bob/settings/mcp.json입니다.

{
  "mcpServers": {
    "hermes": {
      "command": "node",
      "args": ["/absolute/path/to/hermes-mcp/build/index.js"],
      "env": {
        "HERMES_BASE_URL": "https://your-hermes-instance.example.com",
        "HERMES_COOKIE": "AWSELBAuthSessionCookie-0=<your-session-cookie-value>"
      }
    }
  }
}

다음을 교체하세요:

  • /absolute/path/to/hermes-mcp를 이 저장소를 클론한 실제 경로로 바꾸세요.

  • https://your-hermes-instance.example.com을 Hermes URL로 바꾸세요.

  • <your-session-cookie-value>를 DevTools에서 가져온 쿠키 값으로 바꾸세요.

연결 확인

구성을 저장한 후 AI 어시스턴트에게 hermes_me를 실행하도록 요청하세요. 성공적인 응답은 다음과 같습니다:

{
  "id": "...",
  "email": "you@example.com",
  "name": "Your Name"
}

인증 오류가 발생하면 세션 쿠키가 만료되었을 가능성이 큽니다. 새 쿠키를 얻으려면 위 단계를 반복하세요.

사용 가능한 도구

Tool

Description

hermes_search

게시된 모든 문서에 대한 전체 텍스트 검색. 선택적 doc_typeproduct 필터를 지원합니다. 각 결과에는 objectID 필드가 포함되며, 이를 hermes_get_document와 함께 사용하세요.

hermes_get_document

hermes_search 결과에서 찾은 SharePoint objectID(예: 01XOO7K4...)로 문서의 전체 메타데이터를 가져옵니다. RFC-123 같은 사람이 읽을 수 있는 문서 번호가 아닙니다.

hermes_list_drafts

초안 문서를 나열합니다. 선택적으로 소유자 이메일로 필터링할 수 있습니다.

hermes_list_document_types

인스턴스에 구성된 모든 문서 유형(RFC, PRD, FRD, ADR 등)과 해당 스키마 및 사용자 정의 필드를 나열합니다.

hermes_list_products

인스턴스에 구성된 모든 제품과 영역을 나열합니다. hermes_search에 사용할 수 있는 유효한 필터 값을 확인하는 데 유용합니다.

hermes_list_projects

관련 문서를 함께 그룹화하는 프로젝트를 나열합니다.

hermes_me

현재 인증된 사용자의 프로필을 가져옵니다. 세션 쿠키가 작동하는지 확인하는 데 사용하세요.

예시 프롬프트

연결이 완료되면 AI 어시스턴트에게 다음과 같이 요청할 수 있습니다:

  • "Hermes에서 Vault 인증에 관한 RFC를 검색해 줘"

  • "HCP 플랫폼과 관련된 모든 PRD를 찾아 줘"

  • "HVS-022 문서를 검색하고 전체 메타데이터를 가져와 줘"

  • "내가 소유한 모든 초안 문서를 나열해 줘"

  • "Hermes에는 어떤 제품이 있나?"

  • "Terraform 관련 프로젝트를 보여 줘"

환경 변수

Variable

Required

Description

HERMES_BASE_URL

아니요

Hermes 인스턴스의 기본 URL입니다. 기본값은 https://hermes-sharepoint.hashicorp.services입니다.

HERMES_COOKIE

*

이름을 포함한 전체 쿠키 문자열(예: AWSELBAuthSessionCookie-0=...)

HERMES_TOKEN

*

x-amzn-oidc-data 헤더를 통한 ALB OIDC JWT 토큰(쿠키 대안)

* HERMES_COOKIE 또는 HERMES_TOKEN 중 하나 이상이 필요합니다.

개발

# Install dependencies
npm install

# Build (compiles TypeScript → build/index.js)
npm run build

# Rebuild after making changes to src/index.ts
npm run build

소스는 단일 파일입니다: src/index.ts.

세션 쿠키 새로고침

세션 쿠키는 만료됩니다. 도구가 인증 오류를 반환하기 시작하면 새 쿠키를 가져오세요:

  1. 브라우저에서 Hermes 인스턴스에 로그인합니다.

  2. DevTools → Network → 아무 /api/v2/ 요청 → Request Headers → cookie로 이동합니다.

  3. AWSELBAuthSessionCookie-0=... 값을 복사합니다.

  4. mcp.jsonHERMES_COOKIE를 업데이트합니다.

MCP 클라이언트는 다음 요청 시 새 값을 자동으로 가져옵니다(대부분의 클라이언트에서 재시작이 필요 없습니다).

기여

풀 리퀘스트를 환영합니다. 대규모 변경의 경우 먼저 이슈를 열어 주세요.

라이선스

MIT

Available Tools

12 tools
hermes_approve_documentA

Approve a document in Hermes as the currently authenticated user. The document must be in 'In-Review' or 'Approved' status. The current user must be listed as an approver on the document. Use hermes_get_document to check the current status and approver list before calling this.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYesSharePoint objectID of the document to approve (from hermes_search or hermes_get_document)

TDQS

A4/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. It discloses important preconditions (status requirements, approver requirement) and the authenticated-user context. However, it does not state the outcome of approval (e.g., status changes to 'Approved') or any reversibility or response behavior, leaving some behavioral ambiguity.

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 three sentences with no fluff. The core action is front-loaded, followed by conditions and a helpful pre-call instruction. 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 single-parameter mutation tool with no output schema, the description covers the essential invocation context: the action, valid input source, preconditions, and a verification step. It does not explain the response or post-approval state, but the provided guidance is sufficient 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?

Schema coverage is 100% and the parameter description already explains document_id as the SharePoint objectID and where to obtain it. The tool description adds no additional parameter meaning, 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 opens with a specific verb and resource: 'Approve a document in Hermes as the currently authenticated user.' It clearly distinguishes this tool from siblings like hermes_update_document or hermes_request_review by stating the approval action and the required document status and approver role.

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 strong context on when to call the tool: the document must be 'In-Review' or 'Approved' and the user must be an approver. It also instructs to use hermes_get_document to check status and approver list first. It does not explicitly name alternatives or when not to use the tool, so it stops short of a 5.

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

hermes_create_draftA

Create a new document draft in Hermes. Returns the new document's ID which can be used with other tools. The draft will have WIP (work-in-progress) status until published via hermes_request_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesDocument title (required)
productNoProduct or area name. Use hermes_list_products for valid values.
summaryNoShort summary or abstract of the document
doc_typeYesDocument type abbreviation, e.g. 'RFC', 'PRD', 'FRD', 'ADR', 'Memo', 'PRFAQ'. Use hermes_list_document_types to see all available types.
contributorsNoList of contributor email addresses
product_abbreviationNoShort product abbreviation used as the doc number prefix, e.g. 'HVS', 'TF'. Falls back to 'TODO' if omitted.

TDQS

A4.3/5.0
Behavior4/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 discloses the creation side effect, the WIP status, the returned ID, and the publishing path. This is strong behavioral context for a create operation, though it doesn't cover permissions or failure 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?

The description is two concise sentences with no filler. The most important facts—what it creates, what it returns, and the WIP/publish status—are front-loaded and clearly stated.

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 create tool with no output schema, the description fully covers the purpose, return value, and lifecycle status. An agent can invoke it correctly and understand what to do next with the returned ID.

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 each parameter is already documented. The description adds no parameter-specific meaning beyond the schema, which is acceptable given the high coverage.

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 a new document draft'), the target resource (Hermes), and distinguishes its output (new document ID) and lifecycle state (WIP until published). It is easy to tell apart from sibling update/review tools.

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 lifecycle context: the draft is WIP and published later via hermes_request_review. This implies when to use the tool, though it does not explicitly mention alternatives like hermes_update_draft for editing or when not to use this tool.

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

hermes_get_documentA

Get full metadata for a specific Hermes document by its SharePoint objectID. Returns title, status, approvers, summary, custom fields, and links. IMPORTANT: The document_id must be the 'objectID' field from hermes_search results (a SharePoint GUID like '01XOO7K4...'), NOT the human-readable docNumber like 'RFC-123' or 'HVS-022' — those will return a 404. Always call hermes_search first to obtain the objectID, then pass it here.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYesThe SharePoint objectID of the document — a GUID string like '01XOO7K4NVWSKOYH3XMVB3TF54U4DNOEC5'. Found in the 'objectID' field of hermes_search results. Do NOT use docNumber (e.g. 'RFC-123').

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations available, the description carries the full burden. It discloses the input format requirement, the 404 error behavior for wrong IDs, and the output contents, which is strong for a simple read 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?

Every sentence earns its place: purpose, returned fields, critical input warning, and the prerequisite workflow. The most important information is front-loaded, and the description stays focused despite the warning complexity.

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 tool with no output schema and no annotations, this description is complete. It tells the agent what to pass, how to obtain it, what will be returned, and what happens if the wrong value is supplied.

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 schema already covers the parameter at 100%, so the baseline is 3. The description adds value by emphasizing the objectID versus docNumber distinction and the required upstream call to hermes_search, going beyond the schema.

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 the specific verb 'Get' and resource 'full metadata for a specific Hermes document by its SharePoint objectID,' and enumerates the returned fields. This clearly differentiates it from search and create/update siblings.

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 instructs to call hermes_search first to obtain the objectID, warns against using the human-readable docNumber, and states the 404 failure mode. This provides concrete when-to-use and when-not-to-use guidance.

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

hermes_list_document_typesA

List all available document types configured in this Hermes instance (e.g. RFC, PRD, FRD) with their descriptions and custom fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral disclosure burden. It accurately communicates a read-only listing operation and the content of the response, but it does not mention permissions, pagination, or output format. For a simple 0-parameter metadata list, this is adequate but not rich.

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 sentence with no wasted words, front-loads the primary action, and gives just enough detail to clarify purpose and return contents. It is concise without being under-specified.

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 metadata-listing tool with no output schema, the description fully covers what the tool does and what it returns. It includes examples and names the fields included in the response, so an agent has enough context to call it correctly.

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 no parameters and the input schema is complete and empty, so there is nothing for the description to add about parameter semantics. The baseline for a zero-parameter tool is 4, and the description does not need to compensate for any gaps.

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 (list), the resource (document types), and the scope (all in this Hermes instance). It also includes concrete examples and the data returned (descriptions and custom fields), making it easily distinguishable from sibling list tools.

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 description implies this should be used when an agent needs to enumerate available document types, but it provides no explicit when-to-use/when-not-to-use guidance or comparison with alternatives. Its intended context is reasonably clear from the resource name, but the guidance is not explicit.

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

hermes_list_draftsA

List draft documents in Hermes. Returns documents that are in WIP (work-in-progress) status. Optionally filter by owner email address.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerNoFilter drafts by owner email address

TDQS

A4.2/5.0
Behavior4/5

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

There are no annotations, so the description carries the burden of behavioral disclosure. It explicitly states that only WIP-status documents are returned and that owner filtering is optional, which makes the tool's behavior predictable. The read-only nature is reasonably implied by 'List' and 'Returns', and no destructive side effects are suggested.

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 focused sentences with no filler. The core action and status are front-loaded, and the optional filter is stated clearly at the end.

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 list tool with one optional parameter and no nested objects or output schema, the description provides enough context to invoke it correctly: it names the resource, the status filter, and the optional owner filter. It does not mention pagination or ordering, but those are minor gaps for this low-complexity tool.

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%, and the schema already documents the owner parameter as 'Filter drafts by owner email address'. The description repeats this in prose ('Optionally filter by owner email address') but adds no new semantic detail beyond what the schema provides.

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 ('List') and resource ('draft documents in Hermes'), and further clarifies that drafts are WIP-status documents. This clearly distinguishes the tool from siblings like hermes_list_products and hermes_list_projects and from hermes_get_document.

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 clearly indicates when to use the tool: when listing draft/WIP documents, with an optional owner filter. It does not explicitly mention alternatives or exclusions, such as using hermes_search for broader queries, but the intended context is unambiguous.

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

hermes_list_productsA

List all products/areas configured in this Hermes instance. Useful for knowing valid product filter values when searching.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It clearly states the operation is a list (read-only) and defines the scope as all configured products/areas in the Hermes instance. It does not describe the exact return format or pagination, but for a zero-parameter listing tool this is largely sufficient.

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 short sentences with no filler. The main action and resource are front-loaded in the first sentence, and the second sentence adds practical usage guidance. Every word 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?

This is a very simple tool with no parameters and no output schema. The description fully covers what the tool returns and why an agent would call it, making it complete for the tool's complexity level.

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 schema has zero parameters and 100% coverage, so there is no parameter documentation burden. The description reinforces that no filters are needed and implies the return values are valid product filter values, which is useful context beyond the empty schema.

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 ('List') and resource ('all products/areas configured in this Hermes instance'), making the tool's function immediately clear. It also distinguishes itself from sibling tools like hermes_list_projects and hermes_list_document_types by naming a distinct resource type.

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 explicitly notes the tool is useful for knowing valid product filter values when searching, which gives the agent a concrete use case. It does not explicitly mention when not to use it or name alternative tools, but the use case is clear enough for such a simple list operation.

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

hermes_list_projectsA

List projects in Hermes. Projects group related documents together.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-based, default 1)

TDQS

A3.8/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 clearly indicates a read-only listing operation and the grouping purpose, but it does not describe pagination behavior, ordering, or response format. The page parameter in the schema partially compensates for the pagination gap.

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 consists of two short sentences with no filler. The core action and resource are front-loaded, and the second sentence adds relevant domain context without unnecessary verbosity.

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?

Given the tool's very low complexity—one optional pagination parameter and no required inputs—the description plus schema is sufficient for basic invocation. It could mention return shape or when to choose this over sibling list tools, but these omissions are minor for this use case.

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, page, is already fully described in the input schema with type, default, minimum, and a description. The tool description adds no additional parameter semantics, and the schema coverage is 100%, so the baseline 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 the action ('List') and the specific resource ('projects'), and adds useful domain context ('in Hermes') plus the meaning of projects ('group related documents together'). This distinguishes it from sibling tools like hermes_list_products and hermes_list_drafts.

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 statement 'Projects group related documents together' implicitly suggests this tool is useful when needing to enumerate project groupings, but it does not explicitly state when to prefer this over alternatives such as hermes_list_products or hermes_search. Usage context is only implied, not explicit.

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

hermes_meA

Get the currently authenticated user's profile in Hermes. Useful to confirm the session cookie is working.

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?

No annotations are provided, so the description carries the burden of behavior disclosure. It communicates that this is a read-only operation ('Get') and that authentication via session cookie is involved. However, it does not mention response format, potential errors, or any side effects, though those are less critical for a zero-parameter profile lookup.

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 short sentences with no filler. The core purpose is front-loaded, and the secondary usage hint adds value without redundancy.

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 zero-parameter read-only profile endpoint with a simple purpose and no output schema, the description is sufficiently complete. An agent can determine what this tool does and when to call it without additional context.

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, so there is no parameter meaning to add beyond the schema. The baseline of 4 applies because the absence of parameters makes parameter documentation unnecessary.

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: 'Get the currently authenticated user's profile in Hermes.' This clearly distinguishes it from the sibling tools, which all operate on products, projects, drafts, or documents.

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 explicitly states a concrete use case: 'Useful to confirm the session cookie is working.' It does not name alternative tools or when not to use it, but no sibling tool appears to be a direct alternative for retrieving the current user's profile.

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

hermes_request_reviewA

Publish a draft document and request review from approvers. This moves the document from WIP status to 'In-Review' and notifies the assigned approvers. The draft must already have approvers set (use hermes_update_draft to add them first). The document_id must be the SharePoint objectID of a draft.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYesSharePoint objectID of the draft to publish for review (from hermes_list_drafts or hermes_create_draft)

TDQS

A4/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 burden. It discloses key effects: the document moves from WIP to In-Review and notifies assigned approvers. It does not address permissions, reversibility, failure modes, or output behavior, so it is informative but not fully transparent.

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 concise sentences with the primary action and state change first, followed by prerequisite and ID requirement. No fluff or repetition; every sentence carries useful information.

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 annotations and no output schema, the description adequately covers the action, side effects, prerequisite, and parameter semantics. Minor gaps around error handling and permissions exist, but the tool is simple enough that this feels sufficient.

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% and already explains document_id as the SharePoint objectID of the draft. The description reinforces this by specifying it must be a draft and can come from list/create operations, but it doesn't add substantial new meaning beyond the schema.

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 (Publish/request review), the resource (draft document), and the exact state transition (WIP to 'In-Review'). It clearly differentiates from nearby siblings like hermes_update_draft, hermes_approve_document, and hermes_get_document by focusing on the publication-for-review action.

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?

Provides a clear prerequisite: approvers must already be set, and explicitly directs users to hermes_update_draft to add them. It also scopes the document_id to a SharePoint objectID of a draft. It lacks an explicit when-not-to-use or exclusion list, but the usage context is solid.

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

hermes_update_documentA

Update a published document's metadata in Hermes. Supports changing status (In-Review, Approved, Obsolete), title, summary, owners, contributors, approvers, approver groups, and custom fields. For drafts (WIP), use hermes_update_draft instead. Valid statuses: 'In-Review', 'Approved', 'Obsolete'.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew document title
ownersNoUpdated list of owner email addresses (replaces existing)
statusNoNew document status. 'In-Review' — document is under active review by approvers. 'Approved' — document has been approved. 'Obsolete' — document is no longer current.
summaryNoNew summary or abstract
approversNoUpdated list of approver email addresses (replaces existing)
document_idYesSharePoint objectID of the published document to update (from hermes_search or hermes_get_document)
contributorsNoUpdated list of contributor email addresses (replaces existing)
custom_fieldsNoCustom fields specific to the document type. IMPORTANT: 'name' must be the camelCase key (e.g. 'currentVersion'), 'type' must be uppercase (e.g. 'STRING', 'PEOPLE'), and 'display_name' must match the displayName from the API exactly. Call hermes_get_document on an existing doc or hermes_list_document_types to discover valid keys and types.
approver_groupsNoUpdated list of approver group names (replaces existing)

TDQS

A4.1/5.0
Behavior3/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 communicates that this is a mutation, limits the operation to published documents, and enumerates supported fields and valid statuses, but it does not describe side effects, permission requirements, list-replacement semantics, or return behavior. The schema covers some parameter-level replacement behavior, but the tool description itself remains shallow on consequences.

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 short and front-loaded with the primary action and scope. The final sentence repeating the valid statuses is slightly redundant with the parenthetical list earlier, which keeps it from a perfect conciseness score, but overall it is efficient and easy to scan.

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 tool with nine parameters and full schema coverage, the description provides sufficient scoping: it names the resource, lists mutable fields, gives valid statuses, and routes draft usage away. It falls slightly short of fully complete because there is no output schema and the description does not state what the update returns or disclose any side effects beyond the update itself.

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 input schema already documents all nine parameters in detail, including the custom_fields name/type/display_name constraints. The tool description only repeats field names and valid statuses, adding no new parameter-level meaning beyond the schema.

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 opens with a specific verb and resource: 'Update a published document's metadata in Hermes.' It lists exactly which metadata fields are supported and explicitly distinguishes this tool from hermes_update_draft, so an agent can identify what it does without relying on the name alone.

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 states the intended scope ('published document') and gives a direct when-not-to-use instruction: 'For drafts (WIP), use hermes_update_draft instead.' This provides clear routing to the main sibling alternative while other siblings are distinguishable by name and purpose.

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

hermes_update_draftA

Update a document draft in Hermes (WIP status only). Supports updating title, summary, product, contributors, approvers, approver groups, and custom fields. All fields are optional — only provided fields are changed. The document_id must be the SharePoint objectID from hermes_list_drafts or hermes_create_draft.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew title for the document
ownersNoUpdated list of owner email addresses (replaces existing)
productNoNew product or area name
summaryNoNew summary or abstract
approversNoUpdated list of approver email addresses (replaces existing)
document_idYesSharePoint objectID of the draft to update (from hermes_list_drafts or hermes_create_draft)
contributorsNoUpdated list of contributor email addresses (replaces existing)
custom_fieldsNoCustom fields specific to the document type. IMPORTANT: 'name' must be the camelCase key (e.g. 'currentVersion'), 'type' must be uppercase (e.g. 'STRING', 'PEOPLE'), and 'display_name' must match the displayName from the API exactly. Call hermes_get_document on an existing doc or hermes_list_document_types to discover valid keys and types.
approver_groupsNoUpdated list of approver group names (replaces existing)

TDQS

A4/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 disclosure burden. It does explain partial-update semantics ('only provided fields are changed') and the WIP-only restriction, which is valuable. However, it does not mention what the operation returns, whether there are permission requirements, or how errors are surfaced, leaving meaningful gaps for a mutation tool.

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 three sentences with no filler: purpose/WIP restriction, partial-update semantics, and the source of document_id. The information is front-loaded and every sentence contributes to correct invocation.

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?

The combination of description and a fully covered schema gives an agent the necessary info to call the tool correctly: WIP-only eligibility, patch semantics, required document_id, and detailed custom field rules. Missing behavioral details like response shape or non-WIP failure behavior are notable but not blockers given the rich schema.

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 input schema already documents every parameter, including the detailed custom_fields object. The description adds the useful patch behavior ('only provided fields are changed') but mostly lists fields that the schema already names, so it does not substantially extend the schema's semantic value.

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 ('Update') and resource ('a document draft in Hermes') and adds the critical WIP-status constraint, which distinguishes this tool from the sibling hermes_update_document. It also enumerates the updateable fields, making the tool's scope immediately clear.

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 clearly scopes usage to WIP drafts and explains that all fields are optional with only provided fields changed, plus the required document_id provenance. However, it does not explicitly name an alternative tool for non-WIP documents, so the when-not-to-use guidance is mostly implicit rather than explicit.

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

TDQS

A4.1/5.0
Disambiguation5/5

Each tool targets a distinct resource or lifecycle action: products, projects, drafts, published documents, review/approval, search, and metadata lookups. The only potentially overlapping pair (update_draft vs update_document) is clearly separated by WIP status vs published status.

Naming Consistency4/5

Tool names follow a consistent hermes_verb_noun pattern (list_*, create_*, update_*, get_*, approve_*, request_*), with a minor deviation in hermes_me which lacks an explicit verb. Overall the naming convention is predictable and readable.

Tool Count5/5

Twelve tools is well within the typical well-scoped range and each tool supports a distinct part of the document management workflow. No redundant or filler tools are present.

Completeness4/5

The core document lifecycle is covered: create draft, update draft, request review, approve, update published metadata/status, search, and retrieve. Minor gaps exist around rejection/request-changes and explicit deletion, but these are workable given the documented status transitions.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to fetch, index, and perform semantic RAG-based searches on API documentation from various sources. It provides tools for hybrid search and collection management, allowing users to access up-to-date documentation from projects like Gemini and FastMCP.
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to intelligently search and reference documentation using hybrid semantic + keyword search via MCP protocol.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/HarutuneDavisIBM/hermes-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server