Skip to main content
Glama
AdminRHS

Libs MCP Service

by AdminRHS

Libs MCP Service

A Model Context Protocol (MCP) service for integration with external platforms. This service provides CRUD operations for various entities through a standardized MCP interface using the official MCP SDK.

Quick Setup

Configuration

Add the following to your MCP configuration:

{
  "mcpServers": {
    "libs-mcp-service": {
      "command": "npx",
      "args": ["github:AdminRHS/libs-mcp-service"],
      "env": {
        "API_TOKEN": "your_actual_token_here",
        "API_BASE_URL": "https://libs.anyemp.com",
        "MODE": "light"
      }
    }
  }
}

Important: Replace your_actual_token_here with your real API token from the external platform.

Environment Variables

Variable

Required

Description

Default

API_TOKEN

Yes

Authentication token for the external platform

-

API_BASE_URL

Yes

Base URL for the external API

-

MODE

No

UI mode: light (minimal) or standard (full). Affects tool list and response shape

standard

API Environments

  • Production: https://libs.anyemp.com - Main microservice for libraries

  • Development: https://libdev.anyemp.com - Recommended for development and testing

Recommendation: Use the development environment for testing to avoid affecting production data.

Related MCP server: Azure AHDS FHIR MCP Server

โœจ Features

  • ๐Ÿข Official MCP SDK: Full MCP compliance using @modelcontextprotocol/sdk

  • ๐Ÿ”ง Universal Tools: list, get, create, update for all 20+ entity types

  • โšก Performance: Response caching with TTL and smart invalidation

  • ๐Ÿ›ก๏ธ Security: Rate limiting, request size caps, and bearer token authentication

  • ๐Ÿ”„ Smart Updates: Automatic term preservation in update operations

  • ๐Ÿค– AI Metadata: Comprehensive tracking for AI-generated content

  • ๐Ÿ“ฑ Dual Modes: Light mode for minimal UIs, standard mode for full functionality

  • ๐Ÿš€ Easy Deployment: Executable via npx without local installation

๐ŸŽ›๏ธ Modes

Configure behavior with the MODE environment variable:

Light Mode (MODE=light)

  • Same tool list: All tools available (no filtering)

  • Auto-optimization: List operations automatically add all=true and isShort=true parameters

  • Reduced responses: Single get operations return { id, name } format

  • Perfect for: Claude, ChatGPT, and other token-conscious clients

Standard Mode (MODE=standard)

  • Full tool list: All available tools shown

  • Complete responses: Full entity payloads in all operations

  • Manual control: Explicit parameters required for optimization

  • Perfect for: Development and full-featured applications

๐Ÿ› ๏ธ Available Tools

Universal Tools (All Entities)

  • list โ€” List entities with pagination and search

  • get โ€” Fetch single entity by ID

  • create โ€” Create new entity with AI metadata support

  • update โ€” Update entity with automatic term preservation

Essential Specialized Tools

  • get_term_types โ€” Retrieve available term types

  • get_priorities โ€” Retrieve all priorities

  • find_existing_responsibility_terms โ€” Check existing action-object term combinations

  • create_term โ€” Create individual terms with AI metadata

  • update_term โ€” Update individual terms with AI metadata

AI metadata behavior:

  • Create: include aiMetadata only for the term(s) you want marked/recorded as AI-generated; others remain unchanged.

  • Update: include aiMetadata only for term(s) you intend to change; omitting it leaves existing AI fields as-is.

Supported Entities (23 Types)

  • Core: Departments, Professions, Languages, Countries, Cities

  • Content: Actions, Objects, Responsibilities, Formats

  • Organization: Industries, Sub-Industries, Tools, Tool Types

  • System: Statuses, Term Types, Individual Terms

  • Management: Shifts, Currencies, Rates, Levels, Positions, Skills, Priorities

๐Ÿ“š Common Usage Patterns

// List departments with search
{
  "resource": "departments",
  "search": "engineering", 
  "limit": 5
}

Create Entity with AI Metadata

// Create department with AI tracking
{
  "resource": "departments",
  "payload": {
    "mainTerm": {
      "value": "Data Science",
      "language_id": 1,
      "term_type_id": 1,
      "aiMetadata": {
        "ai_generated": true,
        "ai_model": "gpt-4o",
        "ai_confidence_score": 9.5
      }
    }
  }
}

Update with Term Preservation

// Update preserves existing terms automatically
{
  "resource": "departments", 
  "id": "123",
  "payload": {
    "mainTerm": {
      "value": "Updated Name",
      "language_id": 1,
      "term_type_id": 1
    }
    // Existing terms automatically preserved
  }
}

๐Ÿ—๏ธ Architecture

Core Components

  • index.js - Main MCP server with official SDK integration

  • config.js - Environment validation and configuration

  • api.js - HTTP client with caching, timeouts, and error handling

  • entities.js - CRUD operations for all 23 entity types

  • tools.js - MCP tool definitions with JSON Schema validation

  • handlers.js - Tool handler mappings and routing

Advanced Features

  • src/errors.js - Structured error handling with MCP formatting

  • src/cache.js - Response caching with TTL and smart invalidation

  • src/rateLimit.js - Fixed-window rate limiting per client

Build System

  • libs-mcp-service.js - Bundled executable (530KB) for npx deployment

๐Ÿงช Testing Status

โœ… Comprehensive Testing Complete (23/23 Entities)

Entity Category

Entities

Status

Features Tested

Core

Departments, Professions, Languages

โœ… Complete

CRUD, AI metadata, term preservation

Geography

Countries, Cities

โœ… Complete

Complex terms, ISO codes, coordinates

Content

Actions, Objects, Responsibilities

โœ… Complete

Term relationships, format linking

Organization

Industries, Sub-Industries

โœ… Complete

Parent-child relationships

System

Tools, Tool Types, Formats

โœ… Complete

Many-to-many relationships

Meta

Statuses, Term Types, Terms

โœ… Complete

Individual term management

Management

Shifts, Currencies, Rates, Levels, Positions, Skills, Priorities

โœ… Complete

Time, financial, position, role, skill, and priority management

Key Testing Results

  • โœ… Schema Validation: All entity schemas validated against actual API

  • โœ… Permission Testing: Proper 403 handling for restricted operations

  • โœ… AI Metadata: Comprehensive testing of AI tracking fields

  • โœ… Term Preservation: Smart update logic maintains existing terms

  • โœ… Relationship Handling: Complex entity relationships working correctly

  • โœ… Error Handling: Structured errors with proper MCP formatting

๐Ÿ”’ Security Features

  • ๐Ÿ›ก๏ธ Bearer Authentication: Secure API token handling

  • โฑ๏ธ Rate Limiting: 60 requests/minute per client (configurable)

  • ๐Ÿ“ Request Size Limits: 100KB body size cap

  • ๐Ÿ” Secret Masking: Authorization headers masked in cache keys

  • โฐ Timeout Protection: 30-second request timeouts with AbortController

๐Ÿ“ˆ Performance Optimizations

  • ๐Ÿ’พ Response Caching: 5-minute TTL with smart invalidation

  • ๐Ÿ—‚๏ธ Cache Management: Automatic prefix-based invalidation on writes

  • ๐Ÿ“ฆ Bundle Optimization: Minified 530KB bundle with tree-shaking

  • โšก Efficient Updates: Term preservation reduces API calls

๐Ÿš€ Installation & Deployment

npx github:AdminRHS/libs-mcp-service

Option 2: Global Installation

npm install -g github:AdminRHS/libs-mcp-service
libs-mcp-service

Option 3: Development Mode

git clone https://github.com/AdminRHS/libs-mcp-service.git
cd libs-mcp-service
npm install
npm run dev

๐Ÿ”ง API Integration

The service expects RESTful endpoints following this pattern:

GET    /api/token/{entity}           # List with pagination
GET    /api/token/{entity}/:id       # Get by ID  
POST   /api/token/{entity}           # Create new
PUT    /api/token/{entity}/:id       # Update existing
DELETE /api/token/{entity}/:id       # Delete (where permitted)

All requests include Authorization: Bearer <API_TOKEN> header.

Supported Endpoints

  • /api/token/departments - Department management

  • /api/token/professions - Profession management

  • /api/token/languages - Language and term management

  • /api/token/countries - Country data with ISO codes

  • /api/token/cities - City data with coordinates

  • /api/token/actions - Action definitions with terms

  • /api/token/objects - Object definitions with formats

  • /api/token/responsibilities - Responsibility linking

  • /api/token/industries - Industry classifications

  • /api/token/sub-industries - Sub-industry definitions

  • /api/token/tools - Tool management with types

  • /api/token/tool-types - Tool type definitions

  • /api/token/formats - Format specifications

  • /api/token/statuses - Status management

  • /api/token/priorities - Priority management

  • /api/token/term-types - Term type definitions

  • /api/token/terms - Individual term management

  • /api/token/shifts - Working time management

  • /api/token/currencies - Currency management

  • /api/token/rates - Rate management

  • /api/token/levels - Position level management

  • /api/token/positions - Position and role management

  • /api/token/skills - Skill management (responsibility-tool relationships)

๐Ÿ› Troubleshooting

Common Issues

โŒ "API_TOKEN environment variable is required"

  • Verify API_TOKEN is set in your MCP client configuration

  • Check for typos in environment variable names

โŒ "HTTP error! status: 401"

  • Verify your API token is valid and not expired

  • Ensure proper Bearer token format

โŒ "HTTP error! status: 403"

  • Normal behavior for write operations on most entities

  • Only certain entities allow POST/PUT operations

โŒ "Rate limit exceeded"

  • Check if multiple clients are using same configuration

โŒ Service not starting

  • Ensure Node.js 18+ is installed

  • Check network connectivity to API_BASE_URL

Debug Mode

Enable detailed logging:

DEBUG=* npx github:AdminRHS/libs-mcp-service

Health Check

Test connectivity:

// Use 'list' tool with minimal parameters
{
  "resource": "term_types",
  "limit": 1
}

๐Ÿ“Š Metrics & Monitoring

The service includes built-in metrics tracking:

  • Request counts by tool and entity type

  • Error rates with status code breakdown

  • Cache hit/miss ratios for performance monitoring

  • Rate limit statistics per client

  • Response times for performance analysis

๐Ÿค– AI Metadata Support

Comprehensive AI tracking for all terms and entities:

Supported Fields

  • ai_generated - Whether content was AI-generated

  • ai_model - AI model used (e.g., "gpt-4o", "claude-3.5")

  • ai_confidence_score - Confidence rating (0.00-9.99)

  • ai_quality_score - Quality assessment (0.00-9.99)

  • ai_validation_status - Review status ("pending", "approved", "rejected")

  • ai_human_reviewed - Human review flag

  • ai_source_data - Original source information

  • ai_metadata - Additional AI-specific data

Usage Examples

See docs-models/AI_METADATA_GUIDE.md for comprehensive examples and best practices.

๐Ÿ“„ License

MIT License - see LICENSE file for details.

๐Ÿค Contributing

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Make your changes

  4. Run npm run build to update the bundled file

  5. Commit both source and bundled files

  6. Submit a pull request

๐Ÿ“ž Support

  • Issues: Create an issue on GitHub

  • Documentation: Check the docs-models/ directory

  • API Questions: Verify API_BASE_URL and token configuration

  • Performance: Monitor cache hit rates and adjust TTL settings


Status: โœ… Production Ready - All 23 entities tested and validated

Built with โค๏ธ using the official Model Context Protocol SDK

Available Tools

11 tools
createA

Create an entity for the given resource. Payload shape depends on resource (e.g., departments, professions, languages, etc.). For entities with terms, provide mainTerm and optional terms with correct IDs/types. IMPORTANT: When creating AI-generated content, ALWAYS include aiMetadata fields with ai_generated=true, ai_model (e.g., "gpt-4o-mini"), and ai_generation_date. Only attach aiMetadata to the specific term(s) you are creating; terms without aiMetadata will not be touched.

ParametersJSON Schema
NameRequiredDescriptionDefault
payloadYes
resourceYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations present, the description carries the transparency burden. It discloses useful behavioral details: payload shape varies by resource, and "terms without aiMetadata will not be touched." However, it does not address response shape, validation behavior, idempotency, or side effects beyond the creation itself.

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 compact and front-loaded: the first sentence states the purpose, the second flags the resource-dependent payload, and the final sentences carry the critical AI metadata rule. Every sentence earns its place, and the text remains proportionate even though the underlying schema is enormous.

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

Completeness3/5

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

For a tool of this complexity, with no annotations, no output schema, and a massive conditional input schema, the description is minimal. It captures the dominant mainTerm/terms pattern and AI metadata obligation, but it does not guide the agent through simpler payload resources (e.g., name-only tools/formats/statuses) or mention fetching reference IDs via sibling tools. It is adequate but incomplete.

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?

Top-level schema description coverage is 0%, so the description must compensate. It adds real meaning by explaining that payload structure is resource-dependent, that term-bearing entities require mainTerm plus optional terms with correct IDs/types, and that aiMetadata fields are required for AI-generated content. It does not enumerate per-resource required fields, but it points the agent in the right direction.

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 specific action and target: "Create an entity for the given resource," and it names concrete resource examples (departments, professions, languages). It clearly conveys what the tool does, but it does not explicitly distinguish itself from the sibling create_term, so it lacks 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 Guidelines4/5

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

The description gives clear contexts for use: creating an entity for any supported resource, constructing term-bearing payloads with mainTerm and optional terms, and mandatory aiMetadata when generating AI content. Conditional guidance is explicit (โ€œWhen creating AI-generated content, ALWAYS includeโ€), though it does not mention alternatives or when-not-to-use cases.

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

create_termA

Create a new individual term using API token authentication. Terms can exist independently and be linked to term groups. IMPORTANT: When creating AI-generated terms, ALWAYS include aiMetadata with ai_generated=true, ai_model (e.g., "gpt-4o-mini"), and ai_generation_date for proper tracking. Only the created termโ€™s AI metadata is affected.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesTerm value - REQUIRED
status_idNoStatus ID (optional). Use get_statuses to find status ID
aiMetadataNoAI metadata for tracking AI-generated content (optional)
descriptionNoTerm description (optional)
language_idYesLanguage ID - REQUIRED. Use get_languages to find language ID
term_type_idYesTerm type ID - REQUIRED. Use get_term_types to find term type ID
term_group_idYesTerm group ID (optional). If provided, term will be linked to this group

TDQS

A4/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 full behavioral burden. It discloses authentication via API token and scopes the operation with 'Only the created term's AI metadata is affected,' which is valuable context. It also flags the mandatory AI-tracking fields. It does not describe broader side effects, but the mutating nature is clear from the tool name.

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 concise and front-loaded: it states the creation purpose first, then explains term relationships, then provides the critical AI-metadata instruction. Each sentence earns its place and nothing is redundant.

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 rich input schema and the absence of an output schema, this description is nearly complete for invocation. It covers authentication, creation scoping, and AI-metadata requirements. It could be slightly more complete by mentioning likely response behavior, but that is not required for correct calling.

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?

Schema description coverage is 100%, so the baseline is 3. The description adds real value by requiring aiMetadata with ai_generated=true, ai_model, and ai_generation_date for AI-generated termsโ€”ai_generation_date is not listed as required by the schema's conditional logic. It also clarifies that only the created term's AI metadata is affected, which helps an agent reason about parameter scope.

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 and resource: 'Create a new individual term' and emphasizes that terms can exist independently or be linked to term groups. This distinguishes create_term from the list, get, and update siblings. The purpose is unambiguous even without opening the schema.

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 some context about term relationships and an important AI-metadata rule, but it never says when to choose this tool over alternatives like update_term or create. An agent must infer the usage boundary from the tool name alone.

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

find_existing_responsibility_termsA

Find existing Actions and Objects by language to check what terms already exist. Use this BEFORE adding new terms to responsibilities. This tool helps you find existing responsibility combinations or check if a specific action-object pair already has terms.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoSearch term (optional). Use to filter specific action-object combinations.
action_idYesAction ID - REQUIRED. Use get_actions to find action ID.
object_idYesObject ID - REQUIRED. Use get_objects to find object ID.
language_idYesLanguage ID - REQUIRED. Use get_languages to find language ID.
term_type_idYesTerm type ID - REQUIRED. Use get_term_types to find term type ID.

TDQS

A3.6/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 conveys a read-only searching/checking intent through 'Find', 'check', and 'already has terms', but it does not explicitly state that no modification occurs, nor does it disclose output format, pagination, or matching semantics (e.g., exact vs 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 three sentences with front-loaded purpose and usage guidance. The last sentence partially restates the first, but it adds the 'specific action-object pair' check, so the redundancy is minor and not wasteful.

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

Completeness3/5

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

For a tool with no output schema and no annotations, the description explains the core purpose and when to use it, but it omits what the tool returns (e.g., list of existing terms vs a boolean), how the optional search behaves, and any limits. This leaves moderate gaps for an agent to use it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and each parameter is documented with clear guidance (e.g., 'Use get_actions to find action ID'). The description itself does not add parameter-level semantics beyond what the schema provides, so the baseline of 3 is appropriate.

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 specific action ('find existing responsibility combinations') and clarifies the resource ('Actions and Objects by language', 'specific action-object pair'). It also distinguishes itself from the sibling find_existing_skill_terms by focusing on responsibilities. However, the phrasing 'Find existing Actions and Objects' is slightly imprecise because the tool actually checks action-object pair terms, not raw Actions and Objects.

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 says 'Use this BEFORE adding new terms to responsibilities,' giving a clear workflow trigger. It does not mention when not to use it or name alternatives like get/list, but it provides enough context for a responsible calling sequence.

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

find_existing_skill_termsA

Find existing Skills by responsibility and tool to check what terms already exist. Use this BEFORE adding new terms to skills. This tool helps you find existing skill combinations or check if a specific responsibility-tool pair already has terms.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoSearch term (optional). Use to filter specific responsibility-tool combinations.
tool_idYesTool ID - REQUIRED. Use list tools to find tool ID.
language_idYesLanguage ID - REQUIRED. Use get_languages to find language ID.
term_type_idYesTerm type ID - REQUIRED. Use get_term_types to find term type ID.
responsibility_idYesResponsibility ID - REQUIRED. Use list responsibilities to find responsibility ID.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. 'Find... to check what terms already exist' discloses the core read-only, existence-checking behavior, which is the most important trait. It does not describe return semantics, whether the optional search is partial or fuzzy, or how results are presented, but the essential non-mutating character is clear.

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 description runs to three sentences, but the third ('helps you find existing skill combinations or check if a specific responsibility-tool pair already has terms') restates the first sentence with near-identical meaning. The useful content โ€” what it finds and when to use it โ€” is front-loaded, but the redundancy makes it padded.

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

Completeness3/5

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

For a simple lookup with 100% schema description coverage, no annotations, and no output schema, the description covers the main decision points: what it filters on (responsibility and tool) and when to use it (before adding terms). It leaves unspecified the no-match behavior and the distinction from find_existing_responsibility_terms, but nothing critical blocks correct invocation.

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 baseline is 3. The description adds only the relational framing that responsibility_id and tool_id form a pair to be checked together, which is marginally useful for constructing a query. No new parameter-level details are provided beyond what the schema already documents.

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 and resource: 'Find existing Skills by responsibility and tool.' The purpose โ€” checking what terms already exist before adding new ones โ€” is explicit and goes beyond the tool name. It does not, however, differentiate itself from the near-sibling find_existing_responsibility_terms, which appears to serve the same role for a different term 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?

'Use this BEFORE adding new terms to skills' provides an explicit temporal trigger that tells the agent when to invoke this tool. This clearly routes the agent to call it ahead of create_term or create. It does not name specific alternatives or when-not-to-use conditions, but the timing guidance is unambiguous and actionable.

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

getC

Get single entity by ID (short form in light mode)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
isShortNo
resourceYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, so the description carries the behavioral burden. It only mentions 'short form in light mode', which hints at an abbreviated representation but does not explain side effects, return format, authentication, errors, or what 'light mode' means. This is insufficient for a tool with no annotation support.

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 sentence with no redundant filler and the core action is front-loaded. The phrase 'in light mode' is somewhat unclear but does not add bloat, so conciseness is good.

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 no annotations, no output schema, and unexplained parameters, this description is incomplete. It does not explain how 'resource' is used, what 'isShort' really controls, when to prefer this over sibling tools, or what the response looks like. The genericness leaves an agent guessing.

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 clarifies 'id' as the lookup key and loosely hints at 'isShort' through 'short form', but it completely ignores the 'resource' parameter, leaving ambiguity about what entity types are supported.

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 'Get single entity by ID' clearly states the operation: retrieving exactly one entity using an identifier. It distinguishes from list by emphasizing 'single', though 'entity' is generic and does not differentiate between get vs get_priority or get_priorities.

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 it should be used when fetching a single entity by ID, in contrast to list operations. However, it does not explicitly mention alternatives or provide criteria for choosing between this and sibling tools like get_priority or get_term_types.

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

get_prioritiesC

Get all priorities

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
limitNoNumber of priorities per page (default: 10)
searchNoSearch by priority name

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It only says 'Get all priorities' and does not mention pagination, search behavior, or the shape of the response. The phrase 'all' is also slightly misleading because page/limit parameters indicate paginated retrieval by default.

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 short sentence with no filler or redundant information. It is front-loaded and easy to parse, though its brevity leaves out behavioral context that would help an agent use the tool correctly.

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 annotations and no output schema, the description is too thin to fully orient an agent. It does not explain return format, pagination semantics, or how this tool relates to the sibling 'list' and 'get_priority'. The schema covers parameters, but the overall context needed for correct invocation is incomplete.

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 page, limit, and search are already documented with meaningful descriptions. The tool description adds no extra semantic detail about these parameters, so the baseline score of 3 is appropriate.

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 specific verb and resource: 'Get all priorities'. It also implies a collection-level operation, which distinguishes it from the singular get_priority sibling. However, it does not clarify how it differs from the sibling 'list', so sibling differentiation is incomplete.

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 such as list, get_priority, or search-related siblings. It provides no exclusions, prerequisites, or context for choosing this over a similar tool. Usage must be inferred entirely from the name and schema.

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

get_priorityA

Get single priority by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPriority ID - REQUIRED
isShortNoReturn short form (ID and name only)

TDQS

A3.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. The verb 'Get' conveys read-only, single-result behavior and implies no mutation. However, it does not disclose response shape, not-found/error handling, or any permission 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?

One short, front-loaded sentence communicates the core behavior with no filler. Every word contributes to agent understanding.

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

Completeness3/5

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

For a simple two-parameter getter, the description plus schema gives a workable picture. But with no output schema, it omits return format and error behavior, and it does not clarify how the default output differs from the isShort form.

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 schema covers both parameters at 100% coverage, so the baseline is 3. The description adds no semantic detail beyond the schema; it only restates the ID-based lookup concept.

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 ('Get'), a specific resource ('priority'), and a scope qualifier ('single', 'by ID'). This clearly differentiates it from plural tools like get_priorities and list.

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

Usage Guidelines4/5

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

The phrase 'by ID' communicates the clear usage context: use this when you have a priority ID and need exactly one priority. It does not explicitly name alternatives or exclusions, 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.

get_term_typesC

Get all term types

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
limitNoNumber of term types per page (default: 10)
searchNoSearch by term type name or description

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral disclosure burden. It states 'Get all term types' but fails to disclose that results are paginated with a default limit of 10, meaning 'all' is not returned in a single call. It also does not mention read-only status, ordering, or how search interacts with pagination.

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 words. The key verb and resource are front-loaded, making it immediately scannable. It is appropriately sized for a straightforward list endpoint.

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 parameters, no output schema, and no annotations, so the description needs to provide enough context for correct invocation. It omits the critical pagination behavior, such as 'all' requiring multiple pages, and gives no indication of what the response contains. This is a significant gap for a list endpoint with optional pagination.

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%, so the baseline is 3; each parameter already has a clear description in the schema. The description adds no extra meaning beyond what the schema provides, and in fact the phrase 'all' could confuse the understanding of the limit parameter. Therefore it neither elevates nor reduces beyond baseline.

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 uses a clear verb 'Get' and a specific resource 'term types', making the core action unambiguous. It does not explicitly distinguish itself from sibling tools like 'list' or 'get', but the resource name 'term_types' differentiates it from priority- and term-related siblings. The word 'all' is slightly misleading given the pagination parameters, so it does not earn a 5.

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 offers no guidance on when to use this tool versus alternatives, nor does it mention pagination or search behavior. There is no mention of exclusions, prerequisites, or preferred context. The agent is left to infer usage entirely from the schema.

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

listC

List entities (supports UA/RU/EN resource names)

ParametersJSON Schema
NameRequiredDescriptionDefault
allNo
pageNo
limitNo
searchNo
isShortNo
resourceYesEntity name or synonym (e.g., ะดะตะฟะฐั€ั‚ะฐะผะตะฝั‚ะธ | ะพั‚ะดะตะปั‹ | departments)

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 behavioral disclosure. It only states 'List entities' and mentions language support, but doesn't disclose pagination behavior, the meaning of limit/page, whether 'all' bypasses pagination, what 'isShort' controls, or whether any side effects exist. Too little behavioral context for a 6-parameter tool with no annotations.

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 description is a single concise sentence with no waste, which is good for front-loading. However, 'List entities' partially restates the tool name, and the brevity comes at the expense of necessary detail about parameters and behavior. It is efficient but under-specified rather than optimally written.

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 6 parameters, no annotations, and no output schema, so the description must carry significant explanatory weight. It fails to explain pagination semantics, the 'all'/'isShort' flags, search behavior, response shape, or any constraints. An agent would need to infer almost everything about how to call this correctly beyond the resource parameter.

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 roughly 17% (only 'resource' has a description), so the description must compensate for the undocumented parameters. It adds only the UA/RU/EN synonym note for resource and leaves all, page, limit, search, and isShort entirely unexplained in both schema and description. The single i18n detail is valuable but far from sufficient.

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 ('List entities') and adds the useful detail that resource names are supported in UA/RU/EN. It is clear enough to be read as a read/list operation versus siblings like get or update, though it doesn't explicitly differentiate from siblings and 'entities' stays generic.

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. There is no mention of when list is preferred over get, find_existing_*, or create, nor any exclusions. The only hint is the localized resource-name support, which doesn't help an agent choose among sibling tools.

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

updateA

Update an entity by ID for the given resource. Payload shape depends on resource. For term-managed entities, send the FULL terms array on update to avoid deletions (include unchanged terms with their IDs). IMPORTANT: Include aiMetadata ONLY for the term(s) you want to update; other terms without aiMetadata in the payload will keep their existing AI metadata. Recommended fields when updating AI-generated content: ai_generated=true, ai_model (e.g., "gpt-4o-mini"), ai_generation_date.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
payloadYes
resourceYes

TDQS

A3.8/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 disclosure burden. It clearly warns about data-loss risk (omitting unchanged terms causes deletions) and about aiMetadata preservation semantics, which are non-obvious behavioral traits. It also recommends AI metadata fields. It doesn't mention side effects like cascade updates or related resource reindexing, but the critical destructive behavior is well disclosed.

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 relatively compact given the complexity of the tool, front-loading the core purpose and then providing targeted warnings and recommendations. It earns its length by covering the non-obvious update semantics. It is somewhat dense but not bloated, though it could be tightened by removing redundant phrasing about aiMetadata.

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 enormous polymorphic schema with no output schema and no annotations, the description covers the most important cross-cutting behavioral rules (term preservation, aiMetadata scoping, recommended AI fields). It doesn't explicitly list all supported resources or describe return values, but the schema's conditional branches enumerate resources and output schema absence lowers the bar for return-value disclosure. For an agent, the critical update gotchas are covered.

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?

Schema coverage is 0%, so the description must compensate. It explains that payload shape varies by resource, which is essential, and details the important aiMetadata/terms semantics (full terms array, aiMetadata scoping). However, it doesn't describe the top-level 'id' or 'resource' parameter values beyond implication, and the resource list is only visible in the schema's conditionals. Still, the description adds high-value parameter context for the trickiest parts.

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 specific verb ('Update') and resource ('entity by ID for the given resource'), and notes that payload shape depends on resource, which distinguishes it from list/get/create. It doesn't enumerate which resources are supported, but the schema's conditional branches make that clear. It is concise and informative.

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 gives important update-specific guidance (send full terms array, include aiMetadata only for terms to update, recommended AI metadata fields) but doesn't explicitly contrast with sibling tools like create_term or update_term. It implies usage for term-managed resources and gives clear when-to-use details, but lacks direct alternative routing.

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

update_termA

Update an existing individual term using API token authentication. IMPORTANT: Send aiMetadata only when you intend to change AI fields for this term; omitting aiMetadata leaves existing AI fields unchanged. Recommended: include ai_generated=true, ai_model, ai_generation_date. Supports version tracking and term group relation management.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNoTerm value (optional)
termIdYesTerm ID (REQUIRED)
status_idNoStatus ID (optional). Use get_statuses to find status ID
aiMetadataNoAI metadata updates (optional)
descriptionNoTerm description (optional)
language_idNoLanguage ID (optional). Use get_languages to find language ID
term_type_idNoTerm type ID (optional). Use get_term_types to find term type ID
term_group_idYesTerm group ID (optional). For creating/updating group relation

TDQS

A3.7/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 full burden and does real work: it discloses the authentication requirement ('API token authentication'), the critical partial-update semantic ('omitting aiMetadata leaves existing AI fields unchanged'), version tracking, and term group relation management. This is meaningful behavioral context beyond a bare mutation statement, though it stops short of clarifying response format, permissions, or merge behavior for non-AI fields.

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?

Four sentences with no filler: the primary action is front-loaded, the critical aiMetadata warning is isolated with IMPORTANT, and the capability summary is compact. Each sentence earns its place; only 'using API token authentication' is slightly redundant with general API tool expectations.

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

Completeness3/5

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

For a tool with a complex nested aiMetadata schema and conditional requirements, the description covers the highest-risk behavior (partial updates and recommended AI fields) and mentions version tracking. But with no annotations and no output schema, it leaves gaps: it does not state what happens to omitted non-AI fields (merge vs. replace), whether special permissions are needed, or what the response contains.

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?

Schema coverage is high (all 8 parameters have descriptions, including nested aiMetadata properties), so the baseline is 3. The description adds genuine value above the schema by advising when to send aiMetadata, which fields to include (ai_generated=true, ai_model, ai_generation_date), and by referencing version tracking and term group relations, which maps to ai_version and term_group_id semantics.

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 opens with a specific verb and resource: 'Update an existing individual term', which clearly identifies the operation and distinguishes it from creation tools like create_term. However, the sibling list includes a generic 'update' tool, and the description does not clarify how update_term differs from it, 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 Guidelines3/5

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

The phrase 'existing individual term' implies this tool modifies an already-created term rather than creating one, giving some usage context. However, the description never names alternative tools (create_term, find_existing_skill_terms) or states explicit conditions for when to prefer them, leaving the choice mostly implied.

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. Dates show when Glama detected each change.

  1. 11 tool updatesv1.0.0
    • First observedcreate
    • First observedcreate_term
    • First observedfind_existing_responsibility_terms
    • First observedfind_existing_skill_terms
    • First observedget
    • First observedget_priorities
    • First observedget_priority
    • First observedget_term_types
    • First observedlist
    • First observedupdate
    • First observedupdate_term

TDQS

B3.2/5.0
Disambiguation3/5

Generic tools like list/get/create/update overlap with specialized tools like get_priority, create_term, and update_term, making it unclear whether to use the generic path or the specialized one for term and priority operations. Descriptions help clarify intent, but the boundaries are not crisp.

Naming Consistency3/5

The generic operations use bare verbs (list, get, create, update) while the specialized operations use verb_noun patterns (get_priority, create_term, find_existing_skill_terms), so the naming convention is mixed. All names are readable and consistently snake_case, but the pattern is not uniform.

Tool Count5/5

Eleven tools is a reasonable count for an entity/term management server, covering generic resource operations plus dedicated priority, term type, and lookup helpers. Each tool appears purposeful and the set is not bloated.

Completeness3/5

The tool surface covers list, get, create, and update operations, but there is no delete operation for entities or terms, which leaves the lifecycle incomplete. The find_existing_* helpers partially cover term discovery, but dedicated term listing/retrieval is still somewhat implicit.

Maintenance

ActivityInactive
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
    A Model Context Protocol server that provides AI models with structured access to external data and services, acting as a bridge between AI assistants and applications, databases, and APIs in a standardized, secure way.
    2
    -
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A Model Context Protocol service registry and connector framework that enables seamless integration with multiple services and models through a standardized API interface. Provides an extensible architecture for custom service adapters, API integrations, and model registries.
    -

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/AdminRHS/libs-mcp-service'

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