Skip to main content
Glama
Gyeom

OpenFGA MCP Server

by Gyeom

Server Quality Checklist

58%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v1.0.0

  • Disambiguation5/5

    Each tool has a clearly distinct purpose targeting specific OpenFGA operations: check, expand, list_objects, model_read/write, store_list, and tuple operations (read/write/delete/batch_write). No overlap exists between tools, making selection unambiguous for an agent.

    Naming Consistency5/5

    All tools follow a consistent 'openfga_' prefix with snake_case naming, using descriptive verb_noun patterns (e.g., openfga_check, openfga_tuple_write). This uniformity makes the tool set predictable and easy to navigate.

    Tool Count5/5

    With 10 tools, this server is well-scoped for OpenFGA operations, covering core functionalities like authorization checks, model management, tuple operations, and store handling. Each tool earns its place without being overwhelming or insufficient.

    Completeness5/5

    The tool set provides complete coverage for OpenFGA's domain, including CRUD operations for tuples and models, permission checks, expansion for relationship trees, and store management. No obvious gaps exist, enabling agents to handle full authorization workflows.

  • Average 2.9/5 across 10 of 10 tools scored.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 0 commits in the last 12 weeks
    • No stable releases found
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI status not available
  • This repository is licensed under MIT License.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior2/5

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

    With no annotations provided, the description carries full burden for behavioral disclosure but only states the action without details. It doesn't clarify if this is a read-only operation (implied but not explicit), what permissions are needed, potential rate limits, error conditions, or the format of returned data. For a tool with zero annotation coverage, this is a significant gap in transparency.

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

    Conciseness4/5

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

    The description is a single, efficient phrase that directly states the tool's function without unnecessary words. It's appropriately sized for a simple tool, though it could be more front-loaded with key details if expanded. Every word earns its place, but the brevity limits informativeness.

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

    Completeness2/5

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

    Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is incomplete. It lacks details on what the tool returns (e.g., model structure, error handling), behavioral traits, and usage context. While the schema covers parameters well, the overall description doesn't provide enough information for an agent to use the tool effectively without guesswork.

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

    Parameters3/5

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

    The input schema has 100% description coverage, with clear docs for both parameters (env and storeId), including enum values and optionality. The description adds no parameter-specific information beyond what the schema provides, so it meets the baseline of 3 where the schema does the heavy lifting, but doesn't compensate with extra context like default behaviors or examples.

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

    Purpose3/5

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

    The description 'OpenFGA Authorization Model 조회' clearly states the action (조회/retrieve) and resource (Authorization Model), which establishes a basic purpose. However, it doesn't specify what exactly is retrieved (e.g., model definition, metadata, version) or distinguish it from siblings like 'openfga_model_write', leaving it somewhat vague compared to optimal specificity.

    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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a storeId), contrast with siblings like 'openfga_model_write' for modifications, or indicate typical use cases (e.g., inspecting current authorization rules). This lack of context makes it hard for an agent to decide appropriately.

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

  • 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. While it indicates this is a permission check operation (which implies read-only behavior), it doesn't disclose important behavioral traits like whether this requires authentication, what the response format looks like, potential rate limits, or error conditions. For a permission checking tool with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.

    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 extremely concise with just one sentence that directly states the tool's purpose. There's zero wasted language or unnecessary elaboration. It's appropriately sized for what it communicates and is front-loaded with the essential information.

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

    Completeness2/5

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

    Given that this is a permission checking tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., boolean result, detailed permission evaluation), doesn't mention authentication requirements, and provides no context about error handling. For a tool that likely returns important authorization decisions, this leaves too many unknowns for effective use.

    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 description provides no additional parameter information beyond what's already in the schema. However, with 100% schema description coverage where all 5 parameters have clear descriptions in the schema, the baseline score is 3. The description doesn't add any value regarding parameter usage, constraints, or relationships between parameters that aren't already documented in the schema.

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

    Purpose4/5

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

    The description clearly states the tool's purpose as 'OpenFGA 권한 체크 - 사용자가 특정 권한을 가지는지 확인' (OpenFGA permission check - verify if a user has a specific permission). This is a specific verb ('check'/'verify') + resource ('permission') combination that distinguishes it from siblings like tuple operations or model management. However, it doesn't explicitly differentiate from 'openfga_list_objects' which might also involve permission-related queries.

    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 provides no guidance on when to use this tool versus alternatives. With siblings like 'openfga_list_objects' (which might list objects a user has access to) and 'openfga_tuple_read' (which reads relationship tuples), there's no indication of when this specific permission check is preferred over those other approaches. The description only states what it does, not when it should be used.

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

  • Behavior2/5

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

    No annotations are provided, so the description carries the full burden. It states the tool retrieves a list of accessible objects, implying a read-only operation, but doesn't disclose behavioral traits such as authentication requirements, rate limits, error handling, or pagination. This leaves significant gaps for a tool with 5 parameters and no output schema.

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

    Conciseness5/5

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

    The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, with every part contributing to clarity.

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

    Completeness2/5

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

    Given the complexity (5 parameters, no output schema, no annotations), the description is incomplete. It lacks details on behavioral context, usage guidelines, and output format, which are crucial for effective tool invocation. The schema covers parameters well, but overall context is insufficient.

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

    Parameters3/5

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

    Schema description coverage is 100%, so the schema already documents all parameters (env, storeId, user, relation, type) with descriptions. The description adds no additional meaning beyond the schema, such as explaining interactions between parameters or providing examples. Baseline is 3 since the schema does the heavy lifting.

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

    Purpose4/5

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

    The description clearly states the tool's purpose as 'OpenFGA object list retrieval - list of objects accessible to a user,' which specifies the verb (retrieve/list) and resource (objects). It distinguishes from siblings like openfga_check (permission verification) and openfga_tuple_read (tuple retrieval) by focusing on user-accessible objects, but doesn't explicitly contrast them.

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

    Usage Guidelines2/5

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

    No guidance is provided on when to use this tool versus alternatives. It doesn't mention when to choose it over siblings like openfga_expand (expand relationships) or openfga_tuple_read (read tuples), nor does it specify prerequisites or exclusions for usage.

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

  • Behavior2/5

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

    With no annotations provided, the description carries full burden but lacks behavioral details. It implies a write operation ('배포' - deploy) but doesn't disclose permissions required, whether it overwrites existing models, error handling, or response format. This is inadequate for a mutation tool with zero annotation coverage.

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

    Conciseness4/5

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

    The description is a single, efficient sentence that front-loads the core purpose. It avoids redundancy and wastes no words, though it could be slightly more structured by separating usage notes from the main action.

    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 mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what happens on deployment (e.g., model versioning, validation), error cases, or return values, leaving significant gaps in understanding the tool's behavior and outcomes.

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

    Parameters3/5

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

    Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds minimal value by mentioning 'DSL 파일 경로 또는 DSL 문자열' (DSL file path or DSL string), which aligns with the schema's 'filePath' and 'dsl' parameters but doesn't provide additional semantics beyond what's already covered.

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

    Purpose4/5

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

    The description clearly states the action ('배포' - deploy) and resource ('OpenFGA Authorization Model'), specifying it deploys models from either DSL file paths or DSL strings. However, it doesn't explicitly differentiate from sibling tools like 'openfga_model_read' or 'openfga_tuple_write', which handle different operations on similar resources.

    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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a storeId), exclusions (e.g., not for reading models), or compare with siblings like 'openfga_model_read' for retrieval or 'openfga_tuple_write' for tuple operations, leaving usage context unclear.

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

  • Behavior2/5

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

    No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states it's a list retrieval, lacking details on permissions, rate limits, pagination, or response format. This is inadequate 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, efficient phrase ('OpenFGA 스토어 목록 조회') that conveys the core purpose without waste. However, it lacks any structural elements like separation of concerns or front-loading of critical details, which slightly limits its effectiveness.

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

    Completeness2/5

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

    Given no annotations and no output schema, the description is incomplete. It doesn't explain what the list returns (e.g., store IDs, metadata), error conditions, or behavioral traits, leaving significant gaps for a tool that likely interacts with a complex system like OpenFGA.

    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 description coverage is 100%, with the single parameter 'env' fully documented in the schema (including enum values). The description adds no additional parameter information beyond what the schema provides, so it meets the baseline score.

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

    Purpose4/5

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

    The description clearly states the action ('목록 조회' - list retrieval) and resource ('OpenFGA 스토어' - OpenFGA stores), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'openfga_list_objects' or 'openfga_model_read', which prevents a perfect score.

    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 provides no guidance on when to use this tool versus alternatives. With multiple sibling tools available (e.g., openfga_list_objects, openfga_model_read), there's no indication of context, prerequisites, or exclusions for this specific list operation.

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

  • Behavior2/5

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

    No annotations are provided, so the description carries full burden. It states 'batch creation' which implies a write operation, but doesn't disclose critical behavioral traits like whether this is idempotent, requires specific permissions, has rate limits, or what happens on partial failures. For a mutation tool with zero annotation coverage, this is a significant 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 is extremely concise (one sentence in Korean) and front-loaded with the core purpose. There's zero wasted language, making it efficient despite potential content gaps.

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

    Completeness2/5

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

    Given this is a mutation tool (implied by 'creation') with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns, error conditions, or behavioral constraints, leaving the agent with insufficient context for reliable use.

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

    Parameters3/5

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

    Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional meaning about parameters beyond what's in the schema (e.g., it doesn't explain tuple structure or environment implications), meeting the baseline for high schema coverage.

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

    Purpose4/5

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

    The description clearly states the action ('batch creation') and resource ('tuples'), making the purpose understandable. However, it doesn't differentiate from sibling tools like openfga_tuple_write (single tuple creation) or openfga_tuple_delete (deletion), which would require explicit comparison for a perfect score.

    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 provides no guidance on when to use this tool versus alternatives. With siblings like openfga_tuple_write (single tuple) and openfga_tuple_delete, there's no indication that this is for bulk operations or any prerequisites for use, leaving the agent to guess based on the name alone.

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

  • 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 states the tool deletes tuples but doesn't describe what happens upon deletion (e.g., whether it's irreversible, if it affects permissions immediately, or if there are side effects like cascading changes). This is a significant gap for a mutation tool with zero annotation coverage.

    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 extremely concise—a single phrase in Korean that directly states the tool's purpose. It's front-loaded with no wasted words, making it easy to parse quickly, though this conciseness comes at the cost of completeness in other dimensions.

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

    Completeness2/5

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

    Given the complexity of a tuple deletion operation (a mutation with potential side effects), no annotations, no output schema, and sibling tools for similar operations, the description is incomplete. It doesn't address behavioral aspects, usage context, or what to expect after deletion, leaving significant gaps for an AI agent to understand the tool fully.

    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 description coverage is 100%, so the schema already documents all 5 parameters with descriptions. The description adds no additional meaning about parameters beyond what's in the schema, such as explaining how the tuple components (user, relation, object) interact or providing examples beyond those in the schema. Baseline 3 is appropriate when the schema does the heavy lifting.

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

    Purpose4/5

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

    The description clearly states the action ('삭제' meaning 'delete') and resource ('OpenFGA 튜플(권한 관계)' meaning 'OpenFGA tuple (permission relationship)'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like openfga_tuple_write or openfga_tuple_batch_write, which handle tuple creation/modification.

    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 provides no guidance on when to use this tool versus alternatives. It doesn't mention when to delete tuples versus other operations like checking permissions (openfga_check) or reading tuples (openfga_tuple_read), nor does it specify prerequisites or exclusions for deletion.

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

  • 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 but only states the action ('조회' - read). It doesn't mention whether this is a safe read operation, if it requires specific permissions, what the output format might be, or any rate limits. For a tool with 5 parameters and no annotation coverage, this is insufficient behavioral context.

    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, efficient phrase that directly states the tool's purpose without unnecessary words. It's appropriately front-loaded and earns its place by clearly communicating the core function in minimal text.

    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 5 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what '튜플(권한 관계)' entails in practice, how results are returned, or any behavioral constraints. The agent would lack sufficient context to use this tool effectively beyond basic parameter passing.

    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 description coverage is 100%, with all parameters well-documented in the input schema (e.g., env with enum values, storeId with default behavior, user/relation/object as filters). The description adds no additional parameter information beyond what the schema already provides, so it meets the baseline score of 3 for high schema coverage.

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

    Purpose4/5

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

    The description clearly states the verb '조회' (read/retrieve) and resource '튜플(권한 관계)' (tuples/permission relationships), making the purpose understandable. However, it doesn't distinguish this read operation from other tuple-related tools like openfga_tuple_write or openfga_tuple_delete, which would require explicit sibling differentiation for a score of 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 provides no guidance on when to use this tool versus alternatives. Given the sibling tools include openfga_check, openfga_expand, and openfga_list_objects, which might overlap in permission-related queries, the absence of usage context or exclusions leaves the agent without direction for tool selection.

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

  • Behavior2/5

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

    With no annotations provided, the description carries full burden but only states the action ('생성/create'). It doesn't disclose behavioral traits such as whether this is a mutation (implied by 'create'), what permissions are required, whether it's idempotent, error handling, or what happens on success. For a write operation with zero annotation coverage, this is a significant 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 is a single, efficient phrase in Korean that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded, making it easy to understand at a glance.

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

    Completeness2/5

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

    Given this is a write operation with no annotations and no output schema, the description is incomplete. It doesn't cover what the tool returns, error conditions, or important behavioral context needed for safe invocation. The schema provides parameter details, but the description lacks crucial operational information.

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

    Parameters3/5

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

    Schema description coverage is 100%, so the schema already documents all 5 parameters with descriptions and examples. The description adds no additional meaning beyond what's in the schema, such as explaining the tuple model (user-relation-object) or how parameters interact. Baseline 3 is appropriate when schema does the heavy lifting.

    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 'OpenFGA 튜플(권한 관계) 생성' clearly states the action (생성/create) and resource (튜플/권한 관계/tuple/permission relationship) in Korean. It distinguishes from siblings like openfga_tuple_read or openfga_tuple_delete by specifying creation, though it doesn't explicitly differentiate from openfga_tuple_batch_write.

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

    Usage Guidelines2/5

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

    No guidance is provided on when to use this tool versus alternatives. It doesn't mention when to choose openfga_tuple_write over openfga_tuple_batch_write for single vs. batch operations, or when to use it in the context of other OpenFGA tools like openfga_check or openfga_expand.

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

  • 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 states the tool is for 'lookup' (implying read-only), but doesn't specify whether it requires authentication, has rate limits, returns paginated results, or details the output format (e.g., tree structure). For a tool with no annotation coverage, this leaves significant behavioral gaps.

    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, efficient sentence in Korean that front-loads the core purpose ('OpenFGA permission tree expansion') and specifies the action ('lookup of permission relationship trees for a specific object'). Every word contributes meaning with zero waste.

    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?

    Given the tool's moderate complexity (permission tree expansion), no annotations, and no output schema, the description is minimally adequate. It covers the purpose but lacks details on behavioral traits, output format, and usage distinctions from siblings. It's complete enough to understand the basic function but insufficient for optimal agent operation without additional context.

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

    Parameters3/5

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

    The input schema has 100% description coverage, fully documenting all 4 parameters (env, storeId, relation, object) with examples and enum values. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline of 3 without compensating value.

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

    Purpose4/5

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

    The description clearly states the verb ('expand') and resource ('OpenFGA permission tree'), specifying it retrieves permission relationship trees for a particular object. It distinguishes from siblings like 'openfga_check' (permission verification) and 'openfga_tuple_read' (tuple retrieval), though it doesn't explicitly name alternatives.

    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 usage context by mentioning 'specific object permission relationship tree lookup,' suggesting it's for exploring permission hierarchies rather than checking permissions or managing tuples. However, it lacks explicit guidance on when to use this tool versus alternatives like 'openfga_list_objects' or 'openfga_tuple_read,' and doesn't mention prerequisites or exclusions.

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

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

openfga-mcp MCP server

Copy to your README.md:

Score Badge

openfga-mcp MCP server

Copy to your README.md:

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/Gyeom/openfga-mcp'

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