Skip to main content
Glama
wynn-dev

brightspace-mcp-server

by wynn-dev

Server Quality Checklist

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

  • Disambiguation4/5

    Most tools target clearly distinct resources, but get_classlist_emails and get_roster overlap significantly since both return course participant contact info. get_assignments and get_upcoming_due_dates also both surface due dates, though their descriptions help differentiate them.

    Naming Consistency5/5

    Tool names consistently follow a snake_case verb_noun pattern, with get_ prefixed retrieval tools covering most of the surface. check_auth and download_file deviate from get_ but still use clear action_noun naming, so the overall pattern remains predictable.

    Tool Count5/5

    Twelve tools is well within the ideal range for an LMS integration server. Each tool covers a meaningful student-facing Brightspace capability, from auth and courses to grades, content, files, roster, syllabus, and discussions.

    Completeness5/5

    The tool surface is comprehensive for a read-only Brightspace assistant: it covers courses, due dates, grades, announcements, assignments, content, file downloads, rosters, syllabus, and discussions. No critical dead ends are apparent, and agents can chain these tools to answer a wide range of student queries.

  • Average 4.3/5 across 12 of 12 tools scored.

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

    • No community issues in the last 6 months
    • 9 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

  • Behavior3/5

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

    Annotations already declare readOnlyHint=true, and the description adds that it aggregates across all courses and covers assignments, quizzes, and other items. It doesn't disclose return format, pagination, or how the 'specified time window' is exactly applied, but the read-only safety profile is already covered.

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

    Conciseness5/5

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

    The description is two sentences with no filler: the first states the operation and scope, the second gives concrete user-facing trigger phrases. It is front-loaded and efficient.

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

    Completeness4/5

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

    For a read-only tool with two optional, fully documented parameters, the description covers scope, item types, and typical use cases. It doesn't describe the exact return shape or disambiguate from get_assignments, but it is largely complete for a simple fetch tool.

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

    Parameters3/5

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

    Schema description coverage is 100%, so the schema already documents courseId as an optional filter and daysAhead with default and bounds. The description only refers generically to a 'specified time window' and adds no semantic value beyond 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 uses a specific verb ('Fetch') and names the resource ('upcoming due dates across all your courses'), and it identifies what items are included and the time-window scope. It doesn't explicitly distinguish from the sibling get_assignments, but its cross-course aggregate purpose is clear.

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

    Usage Guidelines4/5

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

    The description gives explicit trigger scenarios: when the user asks about deadlines, what's due, upcoming work, or what to do this week. It doesn't provide exclusions or name alternatives like get_assignments, so some overlap ambiguity remains.

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

  • Behavior3/5

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

    Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds the scoping behavior (specific course vs all courses) but does not disclose output shape, ordering, 'recent' window, or pagination traits.

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

    Conciseness5/5

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

    Two short sentences front-load the core action and then give concrete trigger phrases for when to call the tool. There is no filler or redundant detail.

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

    Completeness4/5

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

    For a read-only tool with two optional parameters and high schema coverage, the description adequately covers purpose, filtering options, and usage context. The only notable omission is a description of the return payload, but that is not critical given the simple resource type and no output schema.

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

    Parameters3/5

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

    Schema coverage is 100%, so parameter behavior is already documented. The description's mention of filtering by course mirrors the schema's courseId explanation rather than adding new meaning, and count is fully specified in the schema.

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

    Purpose5/5

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

    The description opens with a specific verb and resource: 'Fetch recent announcements from your courses.' It also distinguishes the tool from siblings by naming exact user intents like announcements, news, updates from instructors, recent posts, and what professors said. An agent can confidently select this over get_assignments, get_discussions, or get_syllabus.

    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 lists when to use the tool: whenever the user asks about announcements, news, updates from instructors, recent posts, or what professors said. It does not explicitly state when not to use it or name alternatives, but the sibling list makes the separation clear enough.

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

  • Behavior3/5

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

    The readOnlyHint annotation already covers the safety profile, so the description only needs to add behavioral context. It does so by clarifying scope (all roles in the course). However, it does not disclose output format or uniqueness guarantees, though these are minor for this simple read operation.

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

    Conciseness5/5

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

    Two sentences with no filler. The main action is front-loaded, and the usage guidance is compactly integrated. Every sentence contributes useful information.

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

    Completeness4/5

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

    For a single-parameter, read-only tool with a fully documented schema, the description covers the essential context: what it fetches, who it includes, and when to use it. No output schema is present, but the return type is easily inferable from the description. A brief note on output format would make it fully complete.

    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 for courseId. The tool description only refers to 'a course' and does not add details beyond the schema, which is acceptable because the schema already defines the parameter clearly.

    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 action and resource: fetching all email addresses for a course. It explicitly enumerates the included roles (instructors, TAs, students), making the tool's purpose unmistakable and clearly distinct from sibling tools like get_roster or get_announcements.

    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 trigger conditions: the user wants a class email list, needs to email the whole class, or wants contact info for everyone enrolled. It does not explicitly name alternatives to avoid, but the use-case framing is sufficiently directive.

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

  • Behavior3/5

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

    The annotations already declare readOnlyHint=true, and the description does not contradict that. The description adds minimal behavioral context beyond listing returned data; it does not discuss pagination, filtering, or response shape, but the read-only nature is well covered by the annotation.

    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 well-structured, with the core function stated first, followed by practical invocation scenarios. Each sentence contributes useful information without unnecessary repetition or filler.

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

    Completeness5/5

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

    For a simple read-only tool with no required parameters and no output schema, the description is sufficiently complete. It tells the agent what the tool returns and when to use it, and the optional parameter is already documented in the schema.

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

    Parameters3/5

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

    The only parameter, activeOnly, is fully described in the schema with a clear explanation and default behavior. The tool description does not add additional parameter context, but with 100% schema description coverage, a baseline score of 3 is appropriate.

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

    Purpose5/5

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

    The description clearly identifies the tool's function: fetching the user's enrolled Brightspace courses. It specifies the exact resource (courses) and the data returned (names, codes, and IDs), making it easily distinguishable from sibling tools like get_my_grades or get_assignments.

    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 provides explicit use cases: when the user asks about their courses, enrolled classes, current semester, or needs a course ID for other queries. It lacks explicit when-not-to-use guidance or alternative tool suggestions, but the context is clear enough for an agent to select this tool appropriately.

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

  • Behavior4/5

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

    Annotations already set readOnlyHint=true, and the description reinforces a no-mutation read operation. It adds useful behavioral detail about returned data (dropbox submissions, quizzes with due dates, status, rubric info) and the optionality of course scope. It doesn't describe pagination or ordering, but that is minor for a simple read-only lookup.

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

    Conciseness5/5

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

    Two sentences, front-loaded with the operation and scope, followed by a concrete use trigger. No redundancy with the title or schema.

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

    Completeness4/5

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

    For a one-parameter read-only tool with high schema coverage, the description sufficiently explains what it returns and when to invoke it. It could be strengthened by explicitly contrasting with get_upcoming_due_dates, which also involves due dates, but the stated trigger conditions mostly cover the disambiguation.

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

    Parameters3/5

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

    Schema coverage is 100%, and the schema already explains that courseId is optional and means 'Course ID to get assignments for' and that omission returns assignments for all enrolled courses. The description corroborates this ('specific course or all enrolled courses') but does not add new semantics beyond the schema; baseline 3 applies.

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

    Purpose5/5

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

    Description states a specific verb ('Fetch') and resource ('assignments and quizzes'), defines the scope ('specific course or all enrolled courses'), and lists concrete included data (dropbox submissions, quizzes with due dates/status/rubric info). This allows an agent to distinguish it from siblings like get_course_content or get_my_grades.

    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?

    Explicit trigger phrase 'Use this when...' enumerates user intents: assignments, homework, what to submit, quizzes, or assignment details and rubrics. It does not state when NOT to use it or name alternatives such as get_upcoming_due_dates for due-date-only queries, so it misses explicit exclusion guidance.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true, but the description adds valuable behavioral context beyond that: it reveals the default privacy behavior of returning only instructors and TAs, and that students require an explicit opt-in via includeStudents. This is meaningful additional transparency for an agent handling user requests.

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

    Conciseness5/5

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

    The description is three sentences with no filler. It front-loads the core function, then gives user-intent triggers, then states default behavior and the parameter needed to change it. Every sentence contributes useful guidance.

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

    Completeness5/5

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

    For a low-complexity read-only tool with only one required parameter and complete schema descriptions, the description covers selection triggers, default behavior, and parameter usage. No output schema or nested objects exist, so return-value documentation is not needed. The description is sufficient for an agent to invoke the tool correctly.

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

    Parameters4/5

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

    The input schema covers all parameters with descriptions at 100% coverage, so the baseline is 3. The description adds further meaning by explicitly stating 'Use includeStudents to get full class list,' reinforcing the parameter's effect and the privacy default. It doesn't elaborate on searchTerm, but the schema already documents that adequately.

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

    Purpose4/5

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

    The description clearly identifies a specific verb and resource ('Fetch the roster for a course') and specifies that it includes instructors, TAs, and optionally students with names, emails, and roles. It also gives concrete user-intent examples. However, it does not explicitly distinguish itself from the sibling get_classlist_emails, which could overlap, 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 Guidelines4/5

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

    The description provides explicit usage context: 'Use this when the user asks about classmates, instructor contact info, TA emails, professor names, or who's in a class.' It also explains the default behavior and how to include students. It does not mention when not to use the tool or alternatives, but the stated context is clear enough for an agent to decide.

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

  • Behavior4/5

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

    Annotations declare readOnlyHint=true, and the description is consistent with that. It adds valuable behavioral detail beyond the annotation by disclosing the optional attachment download side effect, the markdown return format, and the mandatory user-consent precondition for downloadPath.

    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 well-structured: purpose, return format, conditional download behavior, and a critical usage warning. Every sentence adds value, and the important user-consent instruction is prominently highlighted without unnecessary padding.

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

    Completeness5/5

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

    For a simple two-parameter read operation, the description covers the return format, the optional download behavior, and the key precondition for using downloadPath. Given the low complexity and full schema coverage, no critical information is missing.

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

    Parameters4/5

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

    The schema already fully describes both parameters, giving a baseline of 3. The description adds extra meaning by clarifying that providing downloadPath triggers an attachment download and by requiring user confirmation before calling with that parameter, which goes beyond the raw 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 action ('Fetch') and the resource ('syllabus/overview text and optional attachment'), and it clarifies that the overview is returned as markdown. However, it does not explicitly differentiate itself from sibling tools like get_course_content, so the distinction is clear but not directly stated.

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

    Usage Guidelines4/5

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

    The description gives clear context for when to call the tool and provides an explicit conditional guideline: if downloadPath is provided, the user must first be asked where to save the file. It does not mention alternative tools or when to avoid this tool, but the usage context is reasonably complete.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful behavioral detail: it returns grade items with points, percentages, and comments, and it explains the optional course-scoping behavior. This goes beyond what annotations provide.

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

    Conciseness5/5

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

    Two concise sentences with no filler. The core purpose is front-loaded, the return contents are summarized, and the usage guidance is delivered in a compact list of natural user expressions.

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

    Completeness5/5

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

    For a simple tool with one optional parameter, no output schema, and a read-only annotation, the description covers the necessary bases: what it fetches, what it shows, and when to use it. Nothing critical is missing for an agent to select and invoke it correctly.

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

    Parameters3/5

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

    Schema description coverage is 100%, and the schema already fully documents the optional courseId parameter and its omission behavior. The description reinforces this ('specific course or all enrolled courses') but adds no new parameter-level meaning beyond what the schema provides.

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

    Purpose5/5

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

    The description states a specific verb ('Fetch'), a clear resource ('your grade breakdown'), and an explicit scope ('for a specific course or all enrolled courses'). It clearly distinguishes itself from siblings like get_assignments by focusing on grades, points, percentages, and comments.

    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 provides explicit trigger conditions ('when the user asks about grades, scores, marks, GPA, academic performance, or how they're doing in a class'). It does not explicitly name alternative tools to avoid, but the when-to-use guidance is clear and contextually sufficient.

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

  • Behavior4/5

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

    The readOnlyHint annotation already signals a safe read operation, and the description adds meaningful behavior beyond that: the content tree structure, case-insensitive moduleTitle substring matching, and maxDepth recursion limiting. It doesn't mention pagination or rate limits, but these are less critical given the read-only annotation.

    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?

    Four sentences, no filler, with the core purpose front-loaded and optional parameter behavior explained in the later sentences. Every sentence earns its place.

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

    Completeness5/5

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

    For a read-only content retrieval tool with four parameters and no output schema, the description covers what the tool returns (modules, topics, files, links), when to use it, and how to use the key filtering parameters. The schema covers typeFilter and the remaining details, so nothing critical is missing for an agent to invoke it correctly.

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

    Parameters4/5

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

    Schema coverage is 100%, so the schema already documents all parameters well. The description adds value by framing moduleTitle as a way to fetch a specific module 'instead of fetching the entire tree' and maxDepth as enabling a 'table-of-contents view.' This helps the agent choose parameters purposively, though typeFilter is not mentioned in the description.

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

    Purpose5/5

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

    The description opens with a specific verb and resource: 'Fetch the content tree for a course showing modules, topics, files, and links.' This clearly distinguishes the tool from siblings like get_assignments, get_syllabus, or get_discussions, which serve different content domains.

    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 explicit triggers: 'when the user asks about course materials, lecture slides, uploaded files, content structure, or what's in a course module.' It also provides practical guidance on using moduleTitle and maxDepth for specific needs. It doesn't explicitly state when not to use alternatives, but the context is clear enough.

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

  • Behavior4/5

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

    The readOnlyHint annotation already establishes the tool as a safe read operation. The description adds meaningful behavioral detail beyond that: it explains the hierarchical scoping behavior for courseId, forumId, and topicId, telling the agent exactly what each level of input returns.

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

    Conciseness5/5

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

    The description is three focused sentences: the first states the purpose, the second gives user-intent triggers, and the third explains parameter usage. No filler or redundant content, and the most important scoping guidance is front-loaded.

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

    Completeness5/5

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

    For a read-only retrieval tool with 3 well-documented parameters and no output schema, the description adequately covers invocation, parameter combinations, and expected results at each level. An agent has everything needed to call it correctly.

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

    Parameters4/5

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

    Schema description coverage is 100%, so the baseline is 3. The description goes beyond the schema by explaining parameter combination semantics, such as 'Provide just courseId to list all forums and their topics' and 'Add both forumId and topicId to get all posts in a specific discussion topic,' which adds real value.

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

    Purpose5/5

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

    The description uses a specific verb and resource ('Fetch discussion board content for a course including forums, topics, and posts') and clearly differentiates this tool from siblings like announcements and assignments. It also identifies the exact user intents it serves, so an agent can select it accurately.

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

    Usage Guidelines4/5

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

    The description explicitly states when to use the tool ('when the user asks about discussion boards, forum posts, class discussions, or wants to see what's been posted') and explains how parameter combinations change the scope. It does not mention when not to use it or name alternatives, but the context is clear enough.

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

  • Behavior4/5

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

    Annotations already indicate this is not read-only and not destructive. The description adds valuable behavioral context beyond annotations: the tool writes to a local directory, the agent must ask for a download path, and the agent should suggest a readable filename. It doesn't mention overwrite behavior, but the provided guidance is meaningful.

    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 well-structured and front-loaded: it states the action, the usage context, and critical instructions. The included example filename is concrete and useful, not filler. Every sentence earns its place.

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

    Completeness4/5

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

    The description covers the main workflow well: purpose, when to use, required user interaction, and filename handling. A minor gap is that it doesn't explicitly explain the relationship between topicId/folderId/fileId or state that a source identifier is needed to actually download. Still, for the complexity level, it is largely complete.

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

    Parameters4/5

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

    Input schema covers 100% of parameters, so the baseline is 3. The description adds extra semantics for downloadPath by emphasizing the user must choose it, and for customFilename by explaining how to suggest and apply a renamed file. This goes beyond the schema's basic parameter descriptions.

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

    Purpose5/5

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

    The description uses a specific verb and resource: 'Download a file from course content or assignment submissions to a local directory.' It clearly states the tool's scope and differentiates it from the sibling tools, which are all read/retrieval operations rather than file downloads.

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

    Usage Guidelines5/5

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

    The description explicitly says when to use this tool: 'Use this when the user wants to download, save, or get a file from Brightspace course content or dropbox submissions.' It also provides a mandatory prerequisite—asking the user where to save the file—and explains the filename renaming workflow, leaving little to inference.

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

  • Behavior4/5

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

    Annotations already mark this as read-only. The description adds useful behavioral context: the tool checks authentication status and requires prior authentication via a separate command. It doesn't describe what happens when unauthenticated, but the readOnlyHint covers the safety profile and the trigger conditions are clear.

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

    Conciseness5/5

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

    Three short sentences with no wasted words. The purpose is stated first, then the prerequisite, then concrete trigger scenarios. Every sentence earns its place.

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

    Completeness5/5

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

    For a zero-parameter, read-only auth check with no output schema, the description covers everything an agent needs: what it does, how to prepare, and when to invoke it. No meaningful gaps remain.

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

    Parameters4/5

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

    The tool has zero parameters, so there is nothing for the description to explain about parameters. The baseline of 4 for no parameters is appropriate, and the description appropriately focuses on purpose and usage rather than parameter details.

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

    Purpose5/5

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

    States a specific action ('Check if you are authenticated') and a specific resource ('Brightspace'). The sibling tools are all data-retrieval tools for courses, grades, etc., so this auth-check tool is clearly distinguishable.

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

    Usage Guidelines5/5

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

    Explicitly lists when to use the tool: when the user asks if they're logged in, if authentication is working, or when other tools return auth errors. Also provides the prerequisite action ('Run `pnpm run auth` first'). This is exemplary usage guidance.

    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

brightspace-mcp-server MCP server

Copy to your README.md:

Score Badge

brightspace-mcp-server 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/wynn-dev/brightspace-mcp-server'

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