Canvas MCP Server V2.0
The Canvas MCP Server v2.3.0 provides comprehensive Canvas LMS integration through 50+ tools for students, instructors, and administrators.
For Students
Access courses, syllabi, files, and pages
View, submit (text/URL/file), and track assignments and submissions
Monitor grades, module progress, and upcoming assignments
Participate in discussions, read announcements, and send messages
Take quizzes and view results
View calendar events and manage your profile
For Instructors
Create and manage courses, assignments, quizzes, and discussions
Grade submissions and provide feedback
Enroll users with specified roles
Manage rubrics and assignment groups
For Account Administrators
Manage institutional accounts and sub-account hierarchies
Create and manage users across accounts
Oversee and filter all courses within an account
Generate enrollment, grade, and activity reports
Technical Highlights
stdioandstreamable-httptransport modesAutomatic retries, pagination, and robust error handling
Full TypeScript implementation with strict types
Cloud-ready: Docker, Kubernetes, and Docker Compose support
Integrates with AI clients like Claude Desktop via NPM or Docker
API health check tool (
canvas_health_check) to verify connectivity
Allows interaction with the Canvas Learning Management System API, providing tools for managing courses, assignments, enrollments, and student grades within Canvas.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Canvas MCP Server V2.0what assignments are due this week in my courses?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Canvas MCP Server v2.3.0
Security and disclosure history
This project is an independent MCP server for Canvas LMS APIs. It is not affiliated with, endorsed by, or maintained by Instructure or Canvas.
In June 2025, during development of this MCP, I identified a Broken Access Control issue in the Canvas environment at bootcampspot.instructure.com. The issue exposed personally identifiable information for other students enrolled in my course.
I reported the issue through Bugcrowd on June 5, 2025, and also contacted Instructure / Canvas security channels directly. The Bugcrowd report was later closed as "Not Applicable." In subsequent correspondence, Instructure stated that the bootcampspot.instructure.com environment was outside its control.
Public references:
Disclosure thread: https://www.reddit.com/r/cybersecurity/comments/1t6wmkw/reported_a_broken_access_control_bug_to/
Bugcrowd activity timeline: https://imgur.com/gallery/canvas-vuln-declared-n-11-months-ago-zYfHnBs
Later Instructure / BootcampSpot correspondence: https://imgur.com/a/BnhgXme
This repository does not publish exploit steps, affected tenant details beyond what is already public, live URLs, screenshots containing student data, or proof-of-concept abuse flows.
Separately, Instructure publicly disclosed a Canvas security incident in May 2026, and public reporting has linked the incident to ShinyHunters claims. This repository makes no claim that the June 2025 report caused, enabled, predicted, or is technically connected to the May 2026 incident.
This disclosure is documented here for project history and transparency only.
What this is
A comprehensive Model Context Protocol (MCP) server for Canvas LMS with complete student, instructor, and account administration functionality
Related MCP server: Canvas MCP
๐ What's New in v2.3.0
๐ NEW: Streamable HTTP transport support (
MCP_TRANSPORT=streamable-http)๐ฅ๏ธ Preserved: First-class stdio transport for local MCP clients
๐งช Added: Behavior tests for lifecycle, transports, and structured failure-path errors
๐งฑ Improved: Stricter tool schemas and codemode-oriented tool descriptions
๐ง FIXED: Course creation "page not found" error (missing
account_idparameter)๐จโ๐ผ Account Management: Complete account-level administration tools
๐ Reports & Analytics: Generate and access Canvas account reports
๐ฅ User Management: Create and manage users at the account level
๐ข Multi-Account Support: Handle account hierarchies and sub-accounts
โ API Compliance: All endpoints now follow proper Canvas API patterns
๐ฏ Key Features
๐ For Students
Course Management: Access all courses, syllabi, and course materials
Assignment Workflow: View, submit (text/URL/files), and track assignments
Communication: Participate in discussions, read announcements, send messages
Progress Tracking: Monitor grades, module completion, and calendar events
Quizzes: Take quizzes, view results and feedback
File Access: Browse and download course files and resources
๐จโ๐ซ For Instructors
Course Creation: Create and manage course structure (now with proper account support)
Grading: Grade submissions, provide feedback, manage rubrics
User Management: Enroll students, manage permissions
Content Management: Create assignments, quizzes, discussions
๐จโ๐ผ For Account Administrators (NEW!)
Account Management: Manage institutional Canvas accounts
User Administration: Create and manage users across accounts
Course Oversight: List and manage all courses within accounts
Reporting: Generate enrollment, grade, and activity reports
Sub-Account Management: Handle account hierarchies and structures
๐ ๏ธ Technical Excellence
Robust API: Automatic retries, pagination, comprehensive error handling
Cloud Ready: Docker containers, Kubernetes manifests, health checks
Well Tested: Unit tests, integration tests, mocking, coverage reports
Type Safe: Full TypeScript implementation with strict types
50+ Tools: Comprehensive coverage of Canvas LMS functionality
Quick Start
Option 1: Claude Desktop Integration (Recommended MCP Setup)
Add to claude_desktop_config.json:
{
"mcpServers": {
"canvas-mcp-server": {
"command": "npx",
"args": ["-y", "canvas-mcp-server"],
"env": {
"CANVAS_API_TOKEN": "your_token_here",
"CANVAS_DOMAIN": "your_school.instructure.com"
}
}
}
}Option 2: NPM Package
# Install globally
npm install -g canvas-mcp-server
# Configure
export CANVAS_API_TOKEN="your_token_here"
export CANVAS_DOMAIN="your_school.instructure.com"
# Run
canvas-mcp-serverOption 3: Docker
docker run -d \
--name canvas-mcp \
-p 3000:3000 \
-e CANVAS_API_TOKEN="your_token" \
-e CANVAS_DOMAIN="school.instructure.com" \
-e MCP_TRANSPORT="streamable-http" \
-e MCP_HTTP_HOST="0.0.0.0" \
-e MCP_HTTP_PORT="3000" \
-e MCP_HTTP_PATH="/mcp" \
ghcr.io/dmontgomery40/mcp-canvas-lms:latestTransport Modes
The server supports two explicit transport modes:
stdio(default): best for Claude Desktop/Codex/Cursor local MCP wiring.streamable-http: best for local HTTP integrations and containerized workflows.
Transport environment variables
# Required Canvas auth
CANVAS_API_TOKEN=your_token
CANVAS_DOMAIN=your_school.instructure.com
# Transport selection
MCP_TRANSPORT=stdio # or streamable-http
# Streamable HTTP settings
MCP_HTTP_HOST=127.0.0.1
MCP_HTTP_PORT=3000
MCP_HTTP_PATH=/mcp
MCP_HTTP_STATEFUL=true
MCP_HTTP_JSON_RESPONSE=true
MCP_HTTP_ALLOWED_ORIGINS=๐ผ Account Admin Workflow Examples
Create a New Course (FIXED!)
"Create a new course called 'Advanced Biology' in account 123"Now properly creates courses with required account_id parameter
Manage Users
"Create a new student user John Doe with email john.doe@school.edu in our main account"Creates user accounts with proper pseudonym and enrollment setup
Generate Reports
"Generate an enrollment report for account 456 for the current term"Initiates Canvas reporting system for institutional analytics
List Account Courses
"Show me all published Computer Science courses in our Engineering account"Advanced filtering and searching across account course catalogs
๐ Student Workflow Examples
Check Today's Assignments
"What assignments do I have due this week?"Lists upcoming assignments with due dates, points, and submission status
Submit an Assignment
"Help me submit my essay for English 101 Assignment 3"Guides through text submission with formatting options
Check Grades
"What's my current grade in Biology?"Shows current scores, grades, and assignment feedback
Participate in Discussions
"Show me the latest discussion posts in my Philosophy class"Displays recent discussion topics and enables posting responses
Track Progress
"What modules do I need to complete in Math 200?"Shows module completion status and next items to complete
Getting Canvas API Token
Log into Canvas โ Account โ Settings
Scroll to "Approved Integrations"
Click "+ New Access Token"
Enter description: "Claude MCP Integration"
Copy the generated token Save securely!
โ ๏ธ Account Admin Note: For account-level operations, ensure your API token has administrative privileges.
Production Deployment
Docker Compose
git clone https://github.com/DMontgomery40/mcp-canvas-lms.git
cd mcp-canvas-lms
cp .env.example .env
# Edit .env with your Canvas credentials
docker-compose up -dKubernetes
kubectl create secret generic canvas-mcp-secrets \
--from-literal=CANVAS_API_TOKEN="your_token" \
--from-literal=CANVAS_DOMAIN="school.instructure.com"
kubectl apply -f k8s/Health Monitoring
# Check application health
curl http://localhost:3000/health
# Or use the built-in health check
npm run health-checkDevelopment
# Setup development environment
git clone https://github.com/DMontgomery40/mcp-canvas-lms.git
cd mcp-canvas-lms
npm install
# Start development with hot reload
npm run dev:watch
# Run tests
npm run test
npm run coverage
# Code quality
npm run lint
npm run type-check๐ Available Tools (50+ Tools)
canvas_health_check- Check API connectivitycanvas_list_courses- List all your coursescanvas_get_course- Get detailed course infocanvas_list_assignments- List course assignmentscanvas_get_assignment- Get assignment detailscanvas_submit_assignment- Submit assignment workcanvas_get_submission- Check submission statuscanvas_list_modules- List course modulescanvas_get_module- Get module detailscanvas_list_module_items- List items in a modulecanvas_mark_module_item_complete- Mark items completecanvas_list_discussion_topics- List discussion topicscanvas_get_discussion_topic- Get discussion detailscanvas_post_to_discussion- Post to discussionscanvas_list_announcements- List course announcementscanvas_get_user_grades- Get your gradescanvas_get_course_grades- Get course-specific gradescanvas_get_dashboard- Get dashboard infocanvas_get_dashboard_cards- Get course cardscanvas_get_upcoming_assignments- Get due datescanvas_list_calendar_events- List calendar eventscanvas_list_files- List course filescanvas_get_file- Get file detailscanvas_list_folders- List course folderscanvas_list_pages- List course pagescanvas_get_page- Get page contentcanvas_list_conversations- List messagescanvas_get_conversation- Get conversation detailscanvas_create_conversation- Send messagescanvas_list_notifications- List notificationscanvas_get_syllabus- Get course syllabuscanvas_get_user_profile- Get user profilecanvas_update_user_profile- Update profile
canvas_create_course- Create new courses (FIXED: now requires account_id)canvas_update_course- Update course settingscanvas_create_assignment- Create assignmentscanvas_update_assignment- Update assignmentscanvas_list_assignment_groups- List assignment groupscanvas_submit_grade- Grade submissionscanvas_enroll_user- Enroll studentscanvas_list_quizzes- List course quizzescanvas_get_quiz- Get quiz detailscanvas_create_quiz- Create quizzescanvas_start_quiz_attempt- Start quiz attemptscanvas_list_rubrics- List course rubricscanvas_get_rubric- Get rubric details
canvas_get_account- Get account detailscanvas_list_account_courses- List courses in an accountcanvas_list_account_users- List users in an accountcanvas_create_user- Create new users in accountscanvas_list_sub_accounts- List sub-accountscanvas_get_account_reports- List available reportscanvas_create_account_report- Generate account reports
๐ง Breaking Changes in v2.2.0
Course Creation Fix
BEFORE (Broken):
{
"tool": "canvas_create_course",
"arguments": {
"name": "My Course" // โ Missing account_id - caused "page not found"
}
}AFTER (Fixed):
{
"tool": "canvas_create_course",
"arguments": {
"account_id": 123, // โ
Required account_id
"name": "My Course",
"course_code": "CS-101"
}
}๐ Example Claude Conversations
Student: "I need to check my upcoming assignments and submit my English essay"
Claude: I'll help you check your upcoming assignments and then assist with submitting your English essay. Let me start by getting your upcoming assignments...
[Claude uses canvas_get_upcoming_assignments then helps with canvas_submit_assignment]
Instructor: "Create a new Advanced Physics course in the Science department and enroll my teaching assistant"
Claude: I'll help you create the Advanced Physics course in your Science department account and then enroll your TA...
[Claude uses canvas_create_course with proper account_id, then canvas_enroll_user]
Administrator: "Generate an enrollment report for all Computer Science courses this semester"
Claude: I'll generate a comprehensive enrollment report for your CS courses...
[Claude uses canvas_list_account_courses with filters, then canvas_create_account_report]
๐ Troubleshooting
Common Issues:
โ 401 Unauthorized: Check your API token and permissions
โ 404 Not Found: Verify course/assignment IDs and access rights
โ "Page not found" on course creation: Update to v2.2.0 for account_id fix
โ Timeout: Increase
CANVAS_TIMEOUTor check network connectivity
Debug Mode:
export LOG_LEVEL=debug
npm startHealth Check:
npm run health-check๐ค Contributing
We welcome contributions! See CONTRIBUTING.md for guidelines.
Quick Contribution Setup
git clone https://github.com/DMontgomery40/mcp-canvas-lms.git
cd mcp-canvas-lms
npm install
npm run dev:watch
# Make changes, add tests, submit PR๐ Roadmap
v2.3: Enhanced reporting, bulk operations, advanced search
v2.4: Mobile support, offline capability, analytics dashboard
v3.0: Multi-tenant, GraphQL API, AI-powered insights
๐ Support & Community
๐ Bug Reports: GitHub Issues
๐ฌ Questions: GitHub Discussions
๐ Documentation: Wiki
Appendix: MCP in Practice (Code Execution, Tool Scale, and Safety)
Last updated: 2026-03-23
Why This Appendix Exists
MCP is still one of the most useful interoperability layers for agentic tooling. The tradeoff is that large MCP servers can expose dozens of tools, and naive tool-calling can flood context windows with tool schemas, call traces, and low-signal chatter.
In practice, larger tool surfaces only help when orchestration stays token-efficient and execution behavior is constrained.
The Shift to Code Execution / Code Mode
Recent production workflows move orchestration out of conversational turns and into executable loops. This keeps context overhead lower, improves determinism, and makes runs auditable.
Core reading:
Recommended Setup for Power Users
For lower-noise, repeatable MCP usage, start with codemode-oriented routing:
Even with strong setup, model behavior can be hit-or-miss across providers and versions. Keep retries and deterministic fallbacks.
Peter Steinberger Workflow Pattern
A high-leverage pattern is turning broad MCP tool surfaces into narrower CLI/task interfaces:
What Works Best With Which MCP Clients
Claude Code / Codex / Cursor agent workflows: usually strong for direct MCP + code-execution loops.
Thin hosted chat clients: often safer with wrapped CLIs/gateways instead of full raw tool exposure.
High-tool-count servers: usually better when split into narrow task gateways.
This ecosystem changes quickly. If you are reading this now, parts of this section may already be out of date.
Prompt Injection: Risks, Consequences, and Mitigations
Prompt injection remains an open problem for tool-using agents. It is manageable, but not solved.
Primary risks:
Hidden instructions in retrieved content or tool output.
Secret/token exfiltration through unintended calls.
Unauthorized state changes in systems or data.
Mitigation baseline:
Least-privilege credentials and scoped tokens.
Destination/action allowlists and strict schema validation.
Human confirmation for destructive operations.
Sandboxed execution and resource limits.
Structured logging and replayable execution traces.
Treat every tool output as untrusted input unless explicitly verified.
๐ License
MIT License - see LICENSE file for details.
โญ Star this repo if it helps you! โญ
Available Tools
54 toolscanvas_create_account_reportC
Generate a report for an account
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | ID of the account | |
| parameters | No | Report parameters | |
| report | Yes | Type of report to generate |
TDQS
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. 'Generate a report' implies a read-only or data-processing operation, but it does not specify if this is a creation/mutation (e.g., generating a new report file) or a retrieval, nor does it detail permissions, side effects, or output format. This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 is front-loaded and easy to parse, though it could benefit from more detail to improve clarity and completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters, including a nested object for 'parameters'), lack of annotations, and no output schema, the description is insufficient. It does not explain what the report generation entails, what the output might be, or how to use the parameters effectively, leaving users with incomplete context for proper tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for 'account_id', 'parameters', and 'report'. The description does not add any meaning beyond the schema, such as explaining what 'parameters' might include or what 'report' types are available. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, but no extra value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's purpose as 'Generate a report for an account', which includes a verb ('Generate') and resource ('report for an account'), making it clear what it does at a high level. However, it lacks specificity about what kind of report or what the report entails, and it does not differentiate from siblings like 'canvas_get_account_reports', which might retrieve existing reports rather than generate new ones.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 does not mention prerequisites, context, or exclusions, such as when to use 'canvas_get_account_reports' for retrieving reports instead. Without this, users must infer usage from the tool name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_create_assignmentC
Create a new assignment in a Canvas course
| Name | Required | Description | Default |
|---|---|---|---|
| allowed_extensions | No | Allowed file extensions for submissions | |
| course_id | Yes | ID of the course | |
| description | No | Assignment description/instructions | |
| due_at | No | Due date (ISO format) | |
| name | Yes | Name of the assignment | |
| points_possible | No | Maximum points possible | |
| published | No | Whether the assignment is published | |
| submission_types | No | Allowed submission types |
TDQS
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. While 'create' implies a write operation, the description doesn't mention permission requirements, whether the assignment is automatically published, what happens on failure, or typical response formats. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that efficiently communicates the core purpose without unnecessary words. It's front-loaded with the essential action and resource, making it easy to parse. Every word earns its place, and there's no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with 8 parameters, no annotations, and no output schema, the description is insufficient. It doesn't address behavioral aspects like error handling, authentication needs, or what the tool returns upon success. The agent lacks critical context to use this tool effectively beyond the basic action stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter-specific information beyond what's already in the schema (which has 100% coverage). It doesn't explain relationships between parameters (e.g., how 'published' interacts with 'due_at'), provide examples, or clarify edge cases. With complete schema documentation, the baseline is 3, as the description doesn't compensate but also doesn't detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('create') and resource ('new assignment in a Canvas course'), making the purpose immediately understandable. It distinguishes this from sibling tools like 'canvas_update_assignment' or 'canvas_get_assignment' by specifying creation rather than modification or retrieval. However, it doesn't explicitly differentiate from other creation tools like 'canvas_create_quiz' or 'canvas_create_conversation' beyond the resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 (like needing course access), when not to use it (e.g., for updating existing assignments), or direct alternatives (like 'canvas_update_assignment' for modifications). The agent must infer usage from the tool name and context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_create_conversationC
Create a new conversation
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Message body | |
| recipients | Yes | Recipient user IDs or email addresses | |
| subject | No | Message subject |
TDQS
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 'Create' implying a write operation, but doesn't disclose behavioral traits like permissions required, whether conversations are private or group-based, rate limits, or what happens on success/failure. This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 cover behavioral aspects like permissions, response format, or error handling, leaving the agent with insufficient context to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 (body, recipients, subject). The description adds no additional meaning beyond the schema, such as format examples or constraints (e.g., recipient types). 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('new conversation'), which is specific and unambiguous. However, it doesn't differentiate from sibling tools like 'canvas_post_to_discussion' or 'canvas_list_conversations', which would require mentioning this is for direct messaging rather than course discussions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, such as needing valid recipient IDs, or contrast with other communication tools like 'canvas_post_to_discussion' for public discussions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_create_courseC
Create a new course in Canvas
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | ID of the account to create the course in | |
| allow_student_forum_attachments | No | Whether students can add forum attachments | |
| allow_student_wiki_edits | No | Whether students can edit the wiki | |
| allow_wiki_comments | No | Whether wiki comments are allowed | |
| apply_assignment_group_weights | No | Whether to apply assignment group weights | |
| course_code | No | Course code (e.g., CS101) | |
| end_at | No | Course end date (ISO format) | |
| hide_final_grades | No | Whether to hide final grades | |
| integration_id | No | Integration ID for the course | |
| is_public | No | Whether the course is public | |
| is_public_to_auth_users | No | Whether the course is public to authenticated users | |
| license | No | Course license | |
| name | Yes | Name of the course | |
| open_enrollment | No | Whether the course has open enrollment | |
| public_description | No | Public description of the course | |
| public_syllabus | No | Whether the syllabus is public | |
| public_syllabus_to_auth | No | Whether the syllabus is public to authenticated users | |
| restrict_enrollments_to_course_dates | No | Whether to restrict enrollments to course start/end dates | |
| self_enrollment | No | Whether the course allows self enrollment | |
| sis_course_id | No | SIS course ID | |
| start_at | No | Course start date (ISO format) | |
| syllabus_body | No | Course syllabus content | |
| term_id | No | ID of the enrollment term | |
| time_zone | No | Course time zone |
TDQS
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. 'Create a new course' implies a write/mutation operation, but the description doesn't mention required permissions, whether this action is reversible, rate limits, or what happens on success/failure. For a tool with 24 parameters that creates a significant resource, this lack of behavioral context is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core purpose without any wasted words. It's appropriately sized and front-loaded, with every word earning its place. For a tool with a clear primary function, this level of conciseness is ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (24 parameters, no output schema, no annotations), the description is inadequate. It doesn't explain what happens after creation, what permissions are required, or provide any context about the created resource. For a mutation tool with significant parameters and no structured safety annotations, the description should provide more behavioral guidance to be complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all 24 parameters documented in the schema. The description adds no parameter information beyond what's already in the schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description. The description doesn't compensate but doesn't need to since the schema is comprehensive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Create') and resource ('new course in Canvas'), making the purpose immediately understandable. It distinguishes this tool from other canvas_create_* tools by specifying it creates courses rather than accounts, assignments, quizzes, etc. However, it doesn't explicitly differentiate from canvas_update_course, which would be helpful for sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 many sibling tools available (including canvas_update_course and canvas_get_course), there's no indication of prerequisites, when this creation tool is appropriate versus modification tools, or any contextual constraints. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_create_quizC
Create a new quiz in a course
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course | |
| description | No | Description of the quiz | |
| due_at | No | Due date (ISO format) | |
| published | No | Is the quiz published | |
| quiz_type | No | Type of the quiz (e.g., graded) | |
| time_limit | No | Time limit in minutes | |
| title | Yes | Title of the quiz |
TDQS
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 'Create' implies a write operation, it doesn't mention permission requirements, whether the quiz is immediately available to students, what happens on failure, or any rate limits. For a mutation tool with zero 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized for a straightforward creation tool and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with 7 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what happens after creation, what values are returned, or provide any context about the quiz lifecycle. The agent must rely entirely on the schema for operational details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions no parameters at all, but the input schema has 100% description coverage, providing clear documentation for all 7 parameters. This meets the baseline of 3 where the schema does the heavy lifting, though the description adds no additional semantic context about parameter relationships or usage patterns.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('new quiz in a course'), making the purpose immediately understandable. However, it doesn't differentiate this from other creation tools like canvas_create_assignment or canvas_create_course, which would require mentioning specific quiz characteristics to earn 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.
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 like canvas_create_assignment or canvas_update_assignment. It doesn't mention prerequisites, constraints, or typical use cases, leaving the agent to infer usage 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.
canvas_create_userC
Create a new user in an account
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | ID of the account | |
| pseudonym | Yes | ||
| user | Yes |
TDQS
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. 'Create' implies a write/mutation operation, but the description doesn't state whether this requires specific permissions, what happens on success/failure (e.g., returns user ID, sends email), whether it's idempotent, or any rate limits. For a user creation tool with zero annotation coverage, this leaves critical behavioral aspects unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a basic tool description and front-loads the essential information (create + user + account context). Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a user creation tool with 3 complex nested parameters, 33% schema coverage, no annotations, and no output schema, the description is inadequate. It doesn't explain what happens after creation (e.g., does it return the new user's ID?), what permissions are needed, how errors are handled, or the purpose of the pseudonym object versus user object. The description should provide more context given the tool's complexity and lack of supporting documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, meaning most parameters lack documentation in the schema. The description adds no parameter information beyond what's implied by 'new user in an account' - it doesn't explain the three required objects (account_id, user, pseudonym), their relationships, or what fields like 'sis_user_id' or 'time_zone' mean in context. The description fails to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('new user in an account'), making the purpose immediately understandable. It distinguishes from siblings like 'canvas_enroll_user' (which likely adds existing users to courses) and 'canvas_update_user_profile' (which modifies existing users). However, it doesn't specify what constitutes a 'user' in this context (e.g., student, teacher, admin).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 admin permissions), differentiate from 'canvas_enroll_user' (which might handle course enrollment rather than user creation), or specify when this is appropriate versus other user management methods. The agent must infer usage 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.
canvas_enroll_userC
Enroll a user in a course
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course | |
| enrollment_state | No | State of the enrollment (active, invited, etc.) | |
| role | No | Role for the enrollment (StudentEnrollment, TeacherEnrollment, etc.) | |
| user_id | Yes | ID of the user to enroll |
TDQS
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 states the action ('Enroll') but lacks details on permissions required, whether the operation is idempotent, error conditions (e.g., duplicate enrollment), or what happens upon success (e.g., confirmation message). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words, making it easy to parse. It is front-loaded with the core action, though it could benefit from more detail given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 4 parameters, no annotations, and no output schema, the description is insufficient. It lacks information on behavioral traits, error handling, return values, and usage context, leaving significant gaps for an AI agent to understand how to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 (course_id, enrollment_state, role, user_id) with clear descriptions. The description adds no additional meaning beyond what the schema provides, such as explaining default values or constraints, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Enroll') and target ('a user in a course'), making the purpose immediately understandable. However, it does not differentiate this tool from sibling tools like 'canvas_create_user' or 'canvas_update_user_profile', which might involve user-related operations in different contexts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. For example, it doesn't specify prerequisites (e.g., user and course must exist), compare to similar tools like 'canvas_update_user_profile', or indicate scenarios where enrollment might fail, 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.
canvas_get_accountC
Get account details
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | ID of the account |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. 'Get account details' implies a read-only operation but does not disclose behavioral traits such as authentication requirements, rate limits, error handling, or what constitutes 'details' (e.g., permissions, settings). This leaves significant gaps for a tool with no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It is appropriately sized for a simple tool, though it could be more informative without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a simple input schema, the description is incomplete. It lacks details on what 'account details' include, how to interpret results, or any behavioral context, making it inadequate for effective tool use despite low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'account_id' documented as 'ID of the account'. The description does not add meaning beyond the schema, but with high coverage, the baseline is 3. No additional context or examples are provided for the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get account details' restates the tool name 'canvas_get_account' with minimal elaboration, making it tautological. It specifies the verb 'Get' and resource 'account details' but lacks specificity about what details are retrieved or how it differs from sibling tools like canvas_get_user_profile or canvas_list_account_users.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. With siblings like canvas_list_account_users and canvas_get_user_profile, there is no indication of context, prerequisites, or exclusions for selecting this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_get_account_reportsC
List available reports for an account
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | ID of the account |
TDQS
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 'List available reports' but doesn't disclose behavioral traits like whether this is a read-only operation, requires authentication, has rate limits, or what the output format looks like (e.g., list structure, pagination). This leaves significant gaps for a tool with no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste, front-loading the core action ('List available reports') and resource. It's appropriately sized for a simple tool with one parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a simple input schema, the description is incomplete. It lacks details on behavioral aspects (e.g., safety, output format) and usage context, making it inadequate for a tool that interacts with account data, even though the parameter is well-documented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the parameter 'account_id' documented as 'ID of the account'. The description adds no additional meaning beyond this, such as format examples or constraints, so it meets the baseline for high schema coverage without compensating value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('available reports for an account'), making the purpose specific and understandable. It distinguishes from siblings like 'canvas_list_account_courses' by focusing on reports, but doesn't explicitly differentiate from potential report-related tools (e.g., 'canvas_create_account_report' is a sibling).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. The description lacks context about prerequisites (e.g., needing an account ID), exclusions, or comparisons to other list or get tools in the sibling set, leaving usage ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_get_assignmentC
Get detailed information about a specific assignment
| Name | Required | Description | Default |
|---|---|---|---|
| assignment_id | Yes | ID of the assignment | |
| course_id | Yes | ID of the course | |
| include_submission | No | Include user's submission data |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It doesn't disclose whether this is a read-only operation (implied by 'Get' but not explicit), authentication requirements, rate limits, error conditions, or what 'detailed information' includes. The description doesn't contradict annotations (none exist), but fails to provide necessary context for safe and effective use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with zero wasted words. It's front-loaded with the core purpose and efficiently communicates the essential function. Every word earns its place, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what 'detailed information' includes, whether authentication is required, error handling, or how the include_submission parameter affects results. Given the complexity of educational data and lack of structured safety hints, more behavioral context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 three parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain relationships between parameters (e.g., that assignment_id must belong to the specified course_id) or provide examples of valid IDs. The 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('detailed information about a specific assignment'), making the purpose immediately understandable. It distinguishes from siblings like canvas_list_assignments (which lists multiple) and canvas_get_submission (which focuses on submissions). However, it doesn't explicitly contrast with canvas_get_upcoming_assignments or canvas_get_course_grades, which could provide overlapping assignment data in different contexts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 prefer canvas_get_submission (for submission details), canvas_get_upcoming_assignments (for future assignments), or canvas_get_course_grades (which might include assignment grades). There's also no mention of prerequisites like needing course context first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_get_conversationB
Get details of a specific conversation
| Name | Required | Description | Default |
|---|---|---|---|
| conversation_id | Yes | ID of the conversation |
TDQS
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 states 'Get details' which implies a read-only operation, but does not specify authentication requirements, rate limits, error handling, or what 'details' entail (e.g., metadata, messages, participants). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence ('Get details of a specific conversation') that is front-loaded with the core purpose. There is no wasted verbiage or redundancy, making it appropriately concise and well-structured for its simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic action but lacks context on return values, error cases, or behavioral traits. Without an output schema, it should ideally hint at what 'details' include, but the simplicity keeps it from being severely incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the parameter 'conversation_id' documented as 'ID of the conversation'. The description adds no additional meaning beyond this, such as format examples or sourcing instructions. With high schema coverage, the baseline score of 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get details of a specific conversation' clearly states the verb ('Get') and resource ('conversation'), making the purpose unambiguous. It distinguishes from siblings like 'canvas_list_conversations' by specifying retrieval of a single conversation rather than listing multiple. However, it lacks specificity about what 'details' include, which slightly reduces clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 does not mention prerequisites (e.g., needing a conversation ID), exclusions, or comparisons to siblings like 'canvas_list_conversations' for bulk retrieval or 'canvas_create_conversation' for creation. Usage is implied by the name but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_get_courseC
Get detailed information about a specific course
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course |
TDQS
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 it 'gets' information, implying a read-only operation, but doesn't specify authentication requirements, rate limits, error conditions, or what 'detailed information' includes (e.g., fields returned). This is inadequate for a 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It could be slightly more structured by including usage context, but it earns its place by being direct and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 'detailed information' entails (e.g., course name, dates, enrollment), behavioral aspects like permissions or errors, or how it differs from similar tools. For a read operation with rich sibling tools, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'course_id' clearly documented in the schema. The description adds no additional meaning beyond implying the parameter is required for fetching course details. This meets the baseline of 3 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('detailed information about a specific course'), making the purpose evident. It distinguishes from siblings like 'canvas_list_courses' by specifying retrieval of detailed info for a single course rather than listing multiple courses. However, it doesn't explicitly contrast with other get tools (e.g., 'canvas_get_course_grades'), leaving minor ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 course ID), exclusions (e.g., not for listing courses), or direct comparisons to siblings like 'canvas_get_course_grades' or 'canvas_list_courses'. Usage is implied by the name but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_get_course_gradesC
Get grades for a course
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course |
TDQS
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 states 'Get grades for a course', implying a read-only operation, but does not specify whether it requires authentication, returns paginated results, includes historical data, or has rate limits. For a tool with zero annotation coverage, this is a significant gap, as critical behavioral traits are left undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description 'Get grades for a course' is a single, efficient sentence that is front-loaded with the core action. It wastes no words, making it highly concise. However, it lacks structural elements like bullet points or additional context that could enhance clarity without sacrificing brevity, preventing a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a grades retrieval tool, no annotations, and no output schema, the description is incomplete. It does not explain what the return values include (e.g., grade data format, student information, timestamps) or address potential behavioral aspects like error handling. For a tool that likely returns structured data, this leaves significant gaps in understanding its full context and usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the parameter 'course_id' documented as 'ID of the course'. The description does not add any meaning beyond this, such as format examples (e.g., numeric ID) or constraints. Since the schema already provides adequate parameter documentation, the baseline score of 3 is appropriate, as the description neither compensates nor detracts from the schema's clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get grades for a course' clearly states the verb ('Get') and resource ('grades for a course'), making the purpose understandable. However, it lacks specificity about what 'grades' entails (e.g., all grades, aggregated, per student) and does not differentiate from the sibling tool 'canvas_get_user_grades', which might retrieve grades for a specific user rather than a course. This vagueness prevents a higher score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, such as 'canvas_get_user_grades' for user-specific grades or 'canvas_get_submission' for detailed submission data. There is no mention of prerequisites, context, or exclusions, leaving the agent to infer usage based on the tool name alone. This lack of explicit guidance limits effectiveness in tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_get_dashboardC
Get user's dashboard information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 states 'Get user's dashboard information', implying a read-only operation, but doesn't specify authentication needs, rate limits, error handling, or what the return format looks like (e.g., JSON structure). For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence: 'Get user's dashboard information'. It's front-loaded with the core action and resource, with no unnecessary words or redundancy. This is appropriately sized for a simple tool with no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a dashboard tool (which could return varied data) and the lack of annotations and output schema, the description is insufficient. It doesn't explain what 'dashboard information' includes, how it's structured, or any behavioral aspects like permissions or errors. For a tool that likely aggregates data from multiple sources, more context is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameters need documentation. The description doesn't add any parameter information, which is acceptable here since there are no parameters to explain. A baseline score of 4 is appropriate as the schema fully covers the parameter semantics by indicating none are required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get user's dashboard information' clearly states the verb ('Get') and resource ('user's dashboard information'), making the purpose understandable. However, it's somewhat vague about what specific dashboard information is retrieved (e.g., cards, notifications, assignments) and doesn't distinguish it from sibling tools like 'canvas_get_dashboard_cards' or 'canvas_get_upcoming_assignments', which might overlap in scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 any prerequisites, context, or exclusions, and with siblings like 'canvas_get_dashboard_cards' and 'canvas_get_upcoming_assignments', there's no indication of how this tool differs or when it should be preferred over those.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_get_dashboard_cardsB
Get dashboard course cards
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 the action ('Get') without details on permissions, rate limits, data format, or whether it's read-only or has side effects, leaving significant gaps for a tool that likely interacts with user data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words, making it easy to parse. It's front-loaded with the core action, though it could benefit from more detail given the lack of other context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a Canvas API tool with no annotations, no output schema, and sibling tools, the description is inadequate. It lacks details on behavior, output, and differentiation, failing to provide enough context for effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add param info, which is appropriate, but it also doesn't clarify if any implicit parameters (like user context) are involved, slightly limiting completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('dashboard course cards'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'canvas_get_dashboard' or explain what distinguishes 'cards' from the broader dashboard, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 such as 'canvas_get_dashboard' or 'canvas_list_courses'. The description lacks context about prerequisites, timing, or specific use cases, offering minimal direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_get_discussion_topicC
Get details of a specific discussion topic
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course | |
| topic_id | Yes | ID of the discussion topic |
TDQS
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 it's a 'Get' operation, implying read-only behavior, but doesn't clarify permissions required, rate limits, error handling, or what 'details' include (e.g., metadata, posts, attachments). For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior and constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 front-loaded with the core action ('Get details'), making it easy to parse quickly. There's no redundancy or fluff, earning full marks for conciseness and structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a read operation with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what 'details' are returned (e.g., topic title, posts, dates), potential side effects, or error scenarios. For a tool that likely returns structured data, more context is needed to guide effective use, especially without annotations to fill in behavioral gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting both parameters ('course_id' and 'topic_id') as required IDs. The description adds no additional meaning beyond the schema, such as format examples or relationship context. Given the high schema coverage, a baseline score of 3 is appropriate, as the schema adequately handles parameter documentation without extra input from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get details') and resource ('of a specific discussion topic'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'canvas_list_discussion_topics' (which lists topics) or 'canvas_post_to_discussion' (which creates posts), leaving room for improvement in distinguishing specific use cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 course and topic IDs), contrast with 'canvas_list_discussion_topics' for browsing topics, or specify use cases like retrieving topic metadata for editing or viewing details. This lack of context could lead to misuse among similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_get_fileC
Get information about a specific file
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | ID of the file |
TDQS
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 it 'gets information,' implying a read-only operation, but doesn't disclose behavioral traits such as authentication requirements, rate limits, error handling (e.g., for invalid file_id), or what happens if the file is inaccessible. This is a significant gap for a tool with no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose, making it easy to parse quickly. Every word earns its place without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 information is returned (e.g., file details, content, metadata), error conditions, or usage context. For a tool with 1 parameter and no structured output documentation, more detail is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'file_id' documented as 'ID of the file' in the schema. The description adds no additional meaning beyond this, such as format examples (e.g., numeric ID) or where to obtain the ID. Baseline 3 is appropriate 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get information about a specific file' clearly states the verb ('Get') and resource ('file'), but it's vague about what information is retrieved (e.g., metadata, content, permissions). It distinguishes from siblings like 'canvas_list_files' by focusing on a single file, but doesn't specify how it differs from other 'get_' tools (e.g., 'canvas_get_assignment').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 prerequisites (e.g., needing a valid file_id), exclusions (e.g., not for listing files), or comparisons to siblings like 'canvas_list_files' for multiple files or 'canvas_get_page' for different resource types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_get_moduleC
Get details of a specific module
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course | |
| module_id | Yes | ID of the module |
TDQS
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 mentions 'Get details' but doesn't specify if this is a read-only operation, what permissions are needed, how errors are handled, or the format of returned details. This is inadequate for a tool with no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that is front-loaded with the core action. It avoids unnecessary words, though it could be slightly more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 details are returned, error conditions, or behavioral traits, which is insufficient for a tool that retrieves data without structured output documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting both parameters ('course_id' and 'module_id') as required IDs. The description adds no additional meaning beyond this, such as format examples or constraints, so it meets the baseline for high schema coverage without compensating value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb ('Get') and resource ('details of a specific module'), which clarifies the basic purpose. However, it lacks specificity about what details are retrieved and doesn't differentiate from sibling tools like 'canvas_get_module_item' or 'canvas_list_modules', making it vague in context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 such as 'canvas_list_modules' for multiple modules or 'canvas_get_module_item' for items within a module. The description offers no context or exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_get_module_itemB
Get details of a specific module item
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course | |
| item_id | Yes | ID of the module item | |
| module_id | Yes | ID of the module |
TDQS
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 a read operation ('Get'), implying it's non-destructive, but doesn't disclose behavioral traits like authentication needs, rate limits, error conditions, or what 'details' include. For a tool with zero annotation coverage, this leaves significant gaps in understanding how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Get details'). There is zero wasteโevery word contributes directly to stating the purpose without redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 required parameters) and no annotations or output schema, the description is minimally adequate. It states what the tool does but lacks context on behavior, output format, or usage scenarios. It meets the bare minimum for a read operation but doesn't compensate for missing structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear parameter descriptions (e.g., 'ID of the course'). The description adds no additional meaning beyond the schema, such as explaining relationships between parameters or format specifics. Baseline 3 is appropriate when the schema does the heavy lifting, but no extra value is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('details of a specific module item'), making the purpose unambiguous. It distinguishes from siblings like 'canvas_get_module' (which gets the module itself) and 'canvas_list_module_items' (which lists multiple items). However, it doesn't specify what details are retrieved, keeping it from 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.
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. The description doesn't mention prerequisites (e.g., needing course/module/item IDs) or contrast it with related tools like 'canvas_list_module_items' for browsing or 'canvas_get_module' for module-level details. Usage is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_get_pageB
Get content of a specific page
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course | |
| page_url | Yes | URL slug of the page |
TDQS
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 'Get content' which implies a read-only operation, but doesn't mention authentication requirements, rate limits, error handling, or what happens if the page doesn't exist. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasteโit directly states the tool's purpose without fluff. It's appropriately sized for a simple retrieval tool and front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on behavior, error cases, or output format, which could help the agent use it correctly. Without annotations or output schema, more context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for both parameters (course_id and page_url). The description adds no additional parameter semantics beyond what the schema provides, such as explaining URL slug format or course ID sourcing. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get content') and resource ('specific page'), which distinguishes it from siblings like canvas_list_pages (which lists pages) or canvas_get_course (which retrieves course info). However, it doesn't specify the format of the returned content (e.g., HTML, JSON), which keeps it from 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use this tool versus alternatives. While the description implies it's for retrieving a single page's content, it doesn't mention prerequisites (e.g., needing course access) or contrast with siblings like canvas_list_pages for browsing pages. This leaves the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_get_quizC
Get details of a specific quiz
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course | |
| quiz_id | Yes | ID of the quiz |
TDQS
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 'Get details' which implies a read-only operation, but doesn't disclose behavioral traits like authentication needs, rate limits, error handling, or what 'details' include (e.g., format, depth). For a tool with no annotations, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasteโ'Get details of a specific quiz' is front-loaded and appropriately sized for its purpose. Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a simple input schema, the description is incomplete. It doesn't explain what 'details' are returned, potential errors, or behavioral aspects, leaving gaps for an AI agent to invoke the tool correctly in complex scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for 'course_id' and 'quiz_id'. The description adds no meaning beyond the schema, as it doesn't explain parameter relationships or usage context. Baseline 3 is appropriate since the schema does the heavy lifting, but the description doesn't compensate or enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get details of a specific quiz' clearly states the verb ('Get') and resource ('quiz'), making the purpose evident. However, it doesn't differentiate from sibling tools like 'canvas_get_assignment' or 'canvas_get_course', which follow a similar pattern, so it lacks explicit sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, such as 'canvas_list_quizzes' for listing quizzes or other 'canvas_get_*' tools for different resources. There's no mention of prerequisites, context, or exclusions, leaving usage unclear beyond the basic purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_get_rubricC
Get details of a specific rubric
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course | |
| rubric_id | Yes | ID of the rubric |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It states a read operation ('Get'), implying it's non-destructive, but doesn't cover critical aspects like authentication requirements, rate limits, error conditions, or response format. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's front-loaded with the core action ('Get details'), making it easy to parse. Every word earns its place, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for a tool that retrieves data. It doesn't explain what 'details' include (e.g., criteria, ratings), potential permissions needed, or how errors are handled. For a read operation with structured parameters but no output information, more context is needed to fully understand its use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters ('course_id', 'rubric_id') clearly documented in the schema. The description adds no additional meaning beyond implying these IDs are needed to fetch rubric details. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('details of a specific rubric'), making the purpose unambiguous. It distinguishes from sibling tools like 'canvas_list_rubrics' by specifying retrieval of a single rubric rather than listing multiple. However, it doesn't explicitly contrast with other 'get' tools (e.g., 'canvas_get_assignment'), so it's not fully differentiated from all siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 course and rubric IDs), compare it to 'canvas_list_rubrics' for bulk retrieval, or specify contexts where detailed rubric data is required. Usage is implied by the name but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_get_submissionB
Get submission details for an assignment
| Name | Required | Description | Default |
|---|---|---|---|
| assignment_id | Yes | ID of the assignment | |
| course_id | Yes | ID of the course | |
| user_id | No | ID of the user (optional, defaults to self) |
TDQS
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. It states this is a 'Get' operation, implying read-only behavior, but doesn't specify authentication requirements, rate limits, error conditions, or what 'details' are returned. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a simple retrieval tool and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a retrieval tool with good schema coverage but no annotations and no output schema, the description provides the basic purpose but lacks important context. It doesn't explain what 'submission details' include, whether authentication is required, or how errors are handled. The minimum viable threshold is met but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the schema. The description doesn't add any parameter-specific information beyond what's in the schema (e.g., it doesn't explain format of IDs or clarify the optional user_id default behavior). 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('submission details for an assignment'), making the purpose immediately understandable. It distinguishes this as a retrieval tool rather than a creation or modification tool, though it doesn't explicitly differentiate from similar 'get' siblings like canvas_get_assignment or canvas_get_user_grades.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. While the description implies it's for retrieving submission details, there's no mention of prerequisites (e.g., needing course/assignment IDs), when not to use it, or how it differs from other submission-related tools like canvas_submit_assignment or canvas_get_user_grades.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_get_syllabusC
Get course syllabus
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course |
TDQS
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. 'Get' implies a read-only operation, but it doesn't specify authentication requirements, rate limits, error conditions, or what happens if the syllabus doesn't exist (e.g., returns null vs. throws error). For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at three words, front-loading the core action ('Get') and resource ('course syllabus') without any wasted words. It's appropriately sized for a simple retrieval tool, 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.
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 for a tool that retrieves data. It doesn't explain what the syllabus output looks like (e.g., HTML content, file object, structured data), potential side effects, or error handling. For a 'get' operation in an API context, this leaves the agent with insufficient information to use the tool effectively beyond the basic parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the single parameter 'course_id' documented as 'ID of the course'. The description doesn't add any meaning beyond this, such as explaining what format the ID should be in (numeric vs. string) or where to find it. With high schema coverage, the baseline score of 3 is appropriate, as the schema already provides adequate parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get course syllabus' clearly states the verb ('Get') and resource ('course syllabus'), making the basic purpose understandable. However, it doesn't differentiate from sibling tools like 'canvas_get_course' or 'canvas_get_page' that might also return syllabus information, nor does it specify what format the syllabus is returned in (HTML, PDF, text).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. With many sibling 'get' tools (e.g., 'canvas_get_course', 'canvas_get_page'), the description doesn't indicate if this is the preferred method for syllabus retrieval or if other tools might serve similar purposes. There's no mention of prerequisites, such as needing course access permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_get_upcoming_assignmentsC
Get upcoming assignment due dates
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of assignments to return |
TDQS
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 states the tool retrieves data ('Get'), implying a read-only operation, but doesn't specify authentication requirements, rate limits, pagination, or what 'upcoming' means (e.g., time frame, sorting). This leaves significant gaps in understanding how the tool behaves in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words, making it highly concise and front-loaded. It efficiently communicates the core purpose without unnecessary elaboration, earning the highest score for brevity and structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 one parameter, the description is incomplete. It lacks details on behavioral aspects like authentication, error handling, or the definition of 'upcoming,' and doesn't clarify the return format. This leaves the agent with insufficient context to use the tool effectively beyond basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the 'limit' parameter fully documented in the schema. The description doesn't add any parameter-specific details beyond what the schema provides, such as default values or how 'limit' interacts with 'upcoming.' Given the high coverage, the baseline score of 3 is appropriate, as the schema handles the parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get upcoming assignment due dates' clearly states the verb ('Get') and resource ('upcoming assignment due dates'), making the tool's purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'canvas_list_assignments' or 'canvas_get_assignment', which could also retrieve assignment information, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 'canvas_list_assignments' that might list all assignments, there's no indication that this tool specifically focuses on 'upcoming' or 'due dates,' leaving the agent to infer usage context without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_get_user_gradesB
Get all grades for the current user
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 retrieves grades but omits critical details like whether this requires user authentication, if it returns all grades at once or paginated, what format the grades are in, or any rate limits. This is a significant gap for a tool that likely involves sensitive data access.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 any unnecessary words or fluff. It is front-loaded and wastes no space, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for a tool that retrieves user grades. It doesn't explain the return format, error conditions, authentication requirements, or data scope (e.g., historical vs. current grades). For a sensitive read operation, this leaves too many unknowns for reliable agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and the input schema has 100% description coverage (though empty). The description adds no parameter information, which is appropriate here since there are no parameters to document. A baseline score of 4 is assigned as the description doesn't need to compensate for any parameter gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('all grades for the current user'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from siblings like 'canvas_get_course_grades' or 'canvas_get_submission', which might retrieve similar grade-related data but with different scopes or parameters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, such as 'canvas_get_course_grades' for course-specific grades or 'canvas_get_submission' for detailed submission data. It lacks context about prerequisites, user authentication needs, or any exclusions, leaving the agent to infer usage 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.
canvas_get_user_profileB
Get current user's profile
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 'Get' implies a read operation but doesn't disclose behavioral traits such as authentication requirements, rate limits, or what data is returned. This is inadequate for a 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's appropriately sized for a simple tool and front-loaded with the core action, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a simple tool with 0 parameters, the description is incomplete. It lacks details on what the profile includes, error conditions, or behavioral context, which are necessary for effective use by an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema description coverage, the baseline is 4. The description doesn't need to add parameter details, and it correctly implies no inputs are required, which aligns with the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('current user's profile'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'canvas_get_user_grades' or 'canvas_update_user_profile', which would require specifying this is for profile information only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. With siblings like 'canvas_get_user_grades' and 'canvas_update_user_profile', the description lacks context on whether this is for authentication, basic user info, or other purposes, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_health_checkB
Check the health and connectivity of the Canvas API
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions checking 'health and connectivity' but doesn't disclose what that entailsโwhether it tests authentication, API endpoints, network latency, or returns specific status codes. For a diagnostic tool with zero annotation coverage, this leaves behavioral traits unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without any wasted words. It's appropriately sized for a simple diagnostic tool with no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 parameters, no output schema) and the description's clear purpose, it's minimally adequate. However, without annotations or output schema, it lacks details on what the health check returns (e.g., status indicators, error messages), which could hinder an agent's ability to interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, earning a baseline score of 4 for not adding unnecessary information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 checking health and connectivity of the Canvas API, using specific verbs ('check', 'health', 'connectivity') and identifying the target resource ('Canvas API'). However, it doesn't explicitly differentiate from sibling tools, which are all data operations rather than diagnostic checks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like authentication status, nor does it suggest scenarios (e.g., troubleshooting connectivity issues before other operations). With many sibling tools available, this lack of contextual guidance is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_list_account_coursesC
List courses for an account
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | ID of the account | |
| completed | No | Include completed courses | |
| order | No | Sort direction | |
| published | No | Only include published courses | |
| search_term | No | Search term to filter courses | |
| sort | No | Sort order | |
| with_enrollments | No | Include enrollment data |
TDQS
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 'List courses' which implies a read-only operation, but doesn't disclose behavioral traits like pagination, rate limits, authentication requirements, error conditions, or what the return format looks like. For a tool with 7 parameters and no output schema, this leaves significant gaps in understanding how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized and front-loaded, with every word earning its place in conveying the essential function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, no annotations, no output schema), the description is insufficiently complete. It doesn't explain what the tool returns, how results are structured, whether there are limitations or side effects, or how it differs from similar listing tools. For a data retrieval tool with multiple filtering options, more context is needed to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 7 parameters thoroughly. The description adds no additional meaning about parameters beyond implying account-based filtering. With complete schema documentation, the baseline score of 3 is appropriate as the description doesn't compensate but doesn't need to given the comprehensive schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('courses for an account'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'canvas_list_courses' or 'canvas_list_account_users', which would require specifying scope or filtering criteria unique to this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 'canvas_list_courses' (likely listing all courses) and 'canvas_list_account_users' (listing users in an account), there's no indication of context, prerequisites, or exclusions for this account-specific course listing tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_list_account_usersC
List users for an account
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | ID of the account | |
| order | No | Sort direction | |
| search_term | No | Search term to filter users | |
| sort | No | Sort order |
TDQS
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 states the action ('List users') but doesn't describe key behaviors: whether this is a read-only operation (implied but not explicit), if it requires specific permissions, how results are paginated or limited, what the output format looks like, or any rate limits. For a list tool with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves beyond basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence ('List users for an account') that front-loads the core purpose without unnecessary words. It avoids redundancy (e.g., not restating the tool name 'canvas_list_account_users') and wastes no space on extraneous details, making it easy to parse quickly. Every word earns its place by conveying essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a list operation with 4 parameters, no output schema, and no annotations), the description is incomplete. It lacks information on behavioral traits (e.g., pagination, permissions), output format, and usage guidelines. While the schema covers parameters well, the description doesn't address these gaps, making it insufficient for an agent to fully understand how to invoke and interpret results from this tool in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters well-documented in the schema (e.g., 'account_id' as ID of the account, 'order' as sort direction). The description adds no additional semantic context beyond what the schema providesโit doesn't explain parameter interactions (e.g., how 'search_term' and 'sort' work together) or usage examples. With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but doesn't need to heavily.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('users for an account'), making the purpose immediately understandable. It distinguishes this tool from siblings like 'canvas_list_courses' or 'canvas_list_sub_accounts' by specifying it lists users rather than other account-related entities. However, it doesn't explicitly differentiate from 'canvas_get_user_profile' or 'canvas_get_user_grades', which are also user-focused but not list operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 account access), exclusions (e.g., not for listing users across multiple accounts), or comparisons to other user-related tools like 'canvas_get_user_profile' or 'canvas_list_courses' (which might include users). Without such context, an agent must infer usage from the tool name and parameters alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_list_announcementsC
List all announcements in a course
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course |
TDQS
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 states a read operation ('List') but does not mention permissions, rate limits, pagination, or what the output includes (e.g., format, fields). This is inadequate for a tool with zero annotation coverage, as it omits key behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and resource. There is no wasted wording, making it highly concise and well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not cover behavioral aspects like permissions or output format, and while the schema handles parameters, the overall context for safe and effective use is insufficient. This is a read tool with minimal disclosure, leaving gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 the 'course_id' parameter fully. The description adds no additional meaning beyond implying the parameter is used to scope the list, which is redundant with the schema. Baseline 3 is appropriate when the schema handles parameter documentation effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('announcements in a course'), making the purpose specific and understandable. However, it does not explicitly differentiate from sibling tools like 'canvas_list_discussion_topics' or 'canvas_list_notifications', which might also list course-related content, so it misses full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, such as other list tools for announcements or related resources. It lacks context on prerequisites, exclusions, or comparisons to siblings, leaving usage unclear beyond the basic purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_list_assignment_groupsC
List assignment groups for a course
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course |
TDQS
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 states the tool lists assignment groups but doesn't describe any behavioral traitsโsuch as whether it's read-only (implied by 'list'), requires authentication, has rate limits, returns paginated results, or includes error handling. 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.
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 for a simple list operation and front-loaded with the key action and resource, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, no annotations), the description is minimal but insufficient. It lacks context on behavioral aspects (e.g., read-only nature, potential errors), usage guidelines, and output details (e.g., what data is returned). For a tool with no annotations or output schema, the description should compensate more to ensure completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the single parameter 'course_id' documented as 'ID of the course'. The description adds no additional meaning beyond this, such as format examples (e.g., numeric ID) or context about where to find the ID. With high schema coverage, the baseline score of 3 is appropriate, as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('assignment groups for a course'), making the purpose understandable. It distinguishes itself from siblings like 'canvas_list_assignments' by focusing on assignment groups rather than assignments themselves. However, it doesn't specify what an 'assignment group' entails (e.g., categories, weightings), leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 course access), differentiate from similar tools like 'canvas_list_assignments', or specify use cases (e.g., for organizing assignments by category). Without such context, the agent must infer usage 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.
canvas_list_assignmentsC
List assignments for a course
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course | |
| include_submissions | No | Include submission data |
TDQS
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 offers minimal information. It doesn't specify whether this is a read-only operation, what permissions are required, how results are paginated, or what the output format looks like. The description is too vague to adequately inform an agent about the tool's behavior beyond its basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It's front-loaded with the core purpose ('List assignments'), making it easy to parse. Every word earns its place, achieving maximum efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is insufficiently complete. It lacks details on behavioral traits (e.g., read-only status, pagination), output format, error handling, or usage context. Given the complexity of listing assignments in an educational system, more context is needed for an agent to use this tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions 'for a course', which aligns with the required 'course_id' parameter, but doesn't add meaning beyond what the schema already provides (100% coverage). It doesn't explain the 'include_submissions' parameter's effect or when to use it. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate with additional insights.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('assignments for a course'), making the purpose immediately understandable. It distinguishes itself from siblings like 'canvas_get_assignment' (singular) and 'canvas_get_upcoming_assignments' (time-filtered), though it doesn't explicitly mention these distinctions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 choose it over 'canvas_get_assignment' (for a single assignment) or 'canvas_get_upcoming_assignments' (for time-filtered assignments), nor does it specify prerequisites like needing a valid course ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_list_calendar_eventsC
List calendar events
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date (ISO format) | |
| start_date | No | Start date (ISO format) |
TDQS
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. 'List calendar events' implies a read-only operation, but it doesn't specify permissions required, pagination behavior, rate limits, or what happens if dates are omitted (since parameters are optional). This is a significant gap for a tool with no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded and to the point, though it could be more informative without sacrificing conciseness (e.g., by adding minimal context like 'for a course').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a simple input schema, the description is incomplete. It doesn't explain the return format (e.g., list of events with details), error conditions, or behavioral traits like pagination. For a list tool with optional date parameters, this leaves critical gaps for an agent to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for 'start_date' and 'end_date' as ISO format strings. The description adds no parameter semantics beyond what the schema provides, but since the schema does the heavy lifting, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List calendar events' clearly states the verb ('list') and resource ('calendar events'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'canvas_list_assignments' or 'canvas_list_announcements' beyond the resource type, and it lacks specificity about scope or context (e.g., whose calendar, what kind of events).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 course context), exclusions, or comparisons to other list tools (e.g., 'canvas_list_assignments' for assignments vs. this for calendar events), leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_list_conversationsB
List user's conversations
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 without behavioral details. It doesn't disclose whether this is a read-only operation, if it requires specific permissions, how results are returned (e.g., pagination, format), or any rate limits. This is inadequate for a 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It is front-loaded and directly conveys the core functionality without unnecessary elaboration, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is insufficiently complete. It omits critical context such as authentication requirements, return format, pagination behavior, and error handling. For a list operation with no structured support, more detail is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description doesn't add parameter semantics, but this is acceptable given the absence of parameters, aligning with the baseline expectation for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List user's conversations' clearly states the verb ('List') and resource ('user's conversations'), making the purpose immediately understandable. It distinguishes from siblings like 'canvas_get_conversation' (singular) and 'canvas_create_conversation', though it doesn't explicitly differentiate from other list tools (e.g., 'canvas_list_courses').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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., authentication), context (e.g., which user's conversations), or exclusions (e.g., vs. 'canvas_get_conversation' for a specific conversation). Usage is implied but not articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_list_coursesC
List all courses for the current user
| Name | Required | Description | Default |
|---|---|---|---|
| include_ended | No | Include ended courses |
TDQS
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 states the tool lists courses but fails to describe key behaviors like pagination, rate limits, authentication needs, or what 'current user' entails (e.g., based on token context). This is a significant gap for a tool with no 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.
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 is appropriately sized and front-loaded, with no wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not cover behavioral aspects like return format, error handling, or user context, which are crucial for a list operation. The tool's complexity is low, but the description fails to provide sufficient context for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'include_ended' well-documented in the schema. The description does not add any parameter semantics beyond what the schema provides, so it meets the baseline of 3 for high schema coverage without compensating value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('courses for the current user'), making the purpose specific and understandable. However, it does not explicitly differentiate from its sibling 'canvas_list_account_courses', which might list courses at an account level rather than user-specific, leaving some ambiguity in sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, such as 'canvas_list_account_courses' or 'canvas_get_course'. There is no mention of prerequisites, context, or exclusions, leaving the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_list_discussion_topicsC
List all discussion topics in a course
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course |
TDQS
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 states the tool lists topics but does not mention any behavioral traits like pagination, rate limits, permissions required, or what the output format might be. For a list operation 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words, making it highly concise and front-loaded. It efficiently conveys the core purpose without unnecessary elaboration, earning a top score for brevity and clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for a list tool. It does not cover behavioral aspects like pagination, sorting, or error handling, nor does it hint at the return format. For a tool with no structured support, the description should provide more context to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'course_id' parameter clearly documented. The description does not add any meaning beyond the schema, such as explaining where to find the course ID or its format. Given the high schema coverage, a baseline score of 3 is appropriate as the schema handles the parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('all discussion topics in a course'), making the purpose specific and understandable. However, it does not explicitly differentiate from sibling tools like 'canvas_get_discussion_topic' (which likely retrieves a single topic), leaving room for slight ambiguity in sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, such as 'canvas_get_discussion_topic' for a single topic or other list tools for different resources. It lacks any context about prerequisites, exclusions, or typical use cases, offering minimal usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_list_filesC
List files in a course or folder
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course | |
| folder_id | No | ID of the folder (optional) |
TDQS
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 the tool lists files but does not disclose behavioral traits like whether it requires authentication, returns paginated results, includes metadata (e.g., file sizes, types), or has rate limits. This leaves significant gaps for an agent to understand how to use it effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 is front-loaded and wastes no space, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not cover behavioral aspects (e.g., authentication, pagination), return values, or usage context. For a tool with 2 parameters and no structured safety or output info, this leaves the agent with insufficient guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 both parameters ('course_id' and optional 'folder_id'). The description adds no additional meaning beyond what the schema provides, such as explaining how these IDs interact or where to obtain them. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List files') and the target resource ('in a course or folder'), which is specific and unambiguous. However, it does not explicitly differentiate from sibling tools like 'canvas_list_folders' or 'canvas_get_file', which could cause confusion about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, such as 'canvas_list_folders' for listing folders instead of files, or 'canvas_get_file' for retrieving a specific file. There is no mention of prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_list_foldersC
List folders in a course
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It mentions listing folders but does not specify whether this is a read-only operation, if it requires permissions, what the output format is, or any rate limits. This is a significant gap for a tool with no 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.
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 is 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not explain return values, behavioral traits, or usage context, which are crucial for a list operation. This leaves gaps in understanding how to effectively use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting the 'course_id' parameter. The description does not add any additional meaning beyond the schema, such as format examples or constraints, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('folders in a course'), making the purpose specific and understandable. However, it does not differentiate from sibling tools like 'canvas_list_files' or 'canvas_list_modules', which follow a similar pattern for different resources, so it lacks explicit sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, such as other list tools for different resources or filtering options. It only states what it does without context, prerequisites, or exclusions, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_list_module_itemsC
List all items in a module
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course | |
| module_id | Yes | ID of the module |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden but only states the action without disclosing behavioral traits. It does not mention whether this is a read-only operation, if it requires authentication, potential rate limits, pagination behavior, or what the output format looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('List all items in a module') with zero wasted words. It is appropriately sized for a straightforward list operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not address behavioral aspects like safety, performance, or output structure, leaving gaps for an AI agent to understand how to properly invoke and interpret results from this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting both parameters (course_id and module_id). The description adds no additional meaning beyond the schema, so it meets the baseline score of 3 without compensating or enhancing parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('all items in a module'), making the tool's purpose immediately understandable. However, it does not differentiate from sibling tools like 'canvas_get_module_item' (singular) or 'canvas_list_modules', which reduces specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 lacks context such as prerequisites (e.g., needing a valid course and module ID) or comparisons to related tools like 'canvas_get_module_item' for single items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_list_modulesC
List all modules in a course
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course |
TDQS
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 states the tool lists modules but fails to describe key behaviors such as pagination, rate limits, authentication requirements, error handling, or the format of returned data. This is a significant gap for a tool with no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core functionality ('List all modules in a course') with zero wasted words. It is appropriately sized for a simple tool and avoids unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not address behavioral aspects like pagination or error handling, nor does it explain the return format. For a tool that likely returns a list of modules, more context is needed to help the agent understand what to expect from the operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'course_id' parameter clearly documented in the schema. The description does not add any meaning beyond this, such as explaining where to find the course ID or its format. Given the high schema coverage, a baseline score of 3 is appropriate, as the schema adequately handles parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all modules in a course' clearly states the verb ('List') and resource ('modules in a course'), making the tool's purpose immediately understandable. However, it does not explicitly differentiate from sibling tools like 'canvas_get_module' (which retrieves a single module) or 'canvas_list_module_items' (which lists items within modules), leaving some ambiguity in scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 does not mention prerequisites (e.g., needing a valid course ID), exclusions, or comparisons to similar tools like 'canvas_get_module' or 'canvas_list_module_items', leaving the agent to infer usage context solely from the tool name and parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_list_notificationsB
List user's notifications
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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. 'List' implies a read-only operation, but it doesn't specify aspects like pagination, sorting, filtering, rate limits, authentication needs, or what constitutes a 'notification' in this context. For a tool with zero 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It's front-loaded with the core action and resource, making it highly efficient and easy to parse for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 parameters, no output schema) and the description's clarity on purpose, it's minimally adequate. However, the lack of annotations and usage guidelines means the agent might struggle with behavioral nuances like scope or constraints, keeping it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here. A baseline of 4 is applied since the schema fully handles parameters, and the description doesn't need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List user's notifications' clearly states the verb ('List') and resource ('user's notifications'), making the purpose immediately understandable. However, it doesn't distinguish this from other list tools in the sibling set (e.g., canvas_list_announcements, canvas_list_conversations), which would require more specificity 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.
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 context, prerequisites, or differences from other notification-related tools (none are listed in siblings, but this is still a gap). Without any usage cues, the agent must infer 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.
canvas_list_pagesC
List pages in a course
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course |
TDQS
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 a read operation ('List'), which implies non-destructive behavior, but fails to mention any constraints like pagination, rate limits, permissions required, or the format of returned data. This leaves significant gaps in understanding how the tool behaves in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 is front-loaded and wastes no space, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not address behavioral aspects like pagination or error handling, nor does it explain the return format. For a list operation with no structured output documentation, more context is needed to ensure the agent can use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with 'course_id' clearly documented. The description does not add any meaning beyond the schema, such as explaining what constitutes a valid course ID or how to obtain it. Since the schema is comprehensive, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('pages in a course'), making the purpose specific and understandable. It distinguishes from siblings like 'canvas_get_page' (which retrieves a single page) by implying a collection, but could be more explicit about the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, such as 'canvas_get_page' for a single page or 'canvas_list_files' for other resources. It lacks context about prerequisites or exclusions, leaving the agent to infer usage 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.
canvas_list_quizzesC
List all quizzes in a course
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course |
TDQS
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 basic action without disclosing behavioral traits like pagination, rate limits, authentication needs, or return format. It fails to add meaningful context beyond the minimal purpose, leaving 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.
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 is front-loaded and appropriately sized for a simple list operation, with no wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral aspects like pagination, filtering, or error handling, and does not clarify the return format or how it differs from sibling tools, leaving significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the single parameter 'course_id'. The description does not add any meaning beyond what the schema provides, such as explaining what 'quizzes' entails or how the listing is structured, but this is acceptable given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('quizzes in a course'), making the purpose understandable. However, it does not differentiate from sibling tools like 'canvas_list_assignments' or 'canvas_get_quiz', which could cause confusion about scope or detail level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 such as 'canvas_get_quiz' for a single quiz or other list tools for different resources. The description lacks context on prerequisites or exclusions, leaving usage decisions ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_list_rubricsC
List rubrics for a course
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course |
TDQS
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 states 'List' but does not clarify if this is a read-only operation, what permissions are needed, whether it returns paginated results, or any error conditions. This is a significant gap for a tool with no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It is front-loaded and directly states the tool's purpose, making it easy to parse and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not address behavioral aspects like safety, permissions, or return format, which are crucial for a list operation in an educational context. The high schema coverage is insufficient to compensate for these gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'course_id' documented in the schema. The description does not add any meaning beyond the schema, such as format examples or constraints, so it meets the baseline for high schema coverage without extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('rubrics for a course'), making the purpose immediately understandable. However, it does not differentiate from sibling tools like 'canvas_get_rubric' (singular) or other list tools, which would require explicit scope or filtering details 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.
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 does not mention sibling tools like 'canvas_get_rubric' (for a single rubric) or other list tools, nor does it specify prerequisites or contexts for usage, leaving the agent without direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_list_sub_accountsC
List sub-accounts for an account
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | ID of the parent account |
TDQS
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 a read operation ('List'), implying non-destructive behavior, but doesn't disclose any behavioral traits such as pagination, rate limits, authentication needs, or what the output looks like. This is a significant gap for a tool with no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it appropriately sized for a simple list operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 lacks details on behavioral traits, output format, and usage context. For a tool in a rich sibling set with 50+ alternatives, this minimal description doesn't provide enough context for effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter 'account_id', which is documented as 'ID of the parent account'. The description adds no additional meaning beyond this, so it meets the baseline of 3 where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('sub-accounts for an account'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'canvas_list_account_courses' or 'canvas_list_account_users' that also list resources for accounts, missing specific sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, context for listing sub-accounts, or compare to other list tools in the sibling set, leaving the agent with no usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_mark_module_item_completeC
Mark a module item as complete
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course | |
| item_id | Yes | ID of the module item | |
| module_id | Yes | ID of the module |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. 'Mark as complete' implies a write/mutation operation, but it doesn't disclose behavioral traits like required permissions, whether this is reversible, side effects (e.g., notifications, grade updates), rate limits, or what happens on success/failure. The description is minimal and lacks crucial context for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a mutation tool with no annotations and no output schema, the description is incomplete. It lacks behavioral context (e.g., permissions, side effects), usage guidance, and details on return values or errors. For a tool that modifies state, this minimal description leaves significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for course_id, item_id, and module_id. The description adds no parameter-specific information beyond what the schema provides, such as how these IDs relate or where to find them. Baseline 3 is appropriate 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Mark a module item as complete' clearly states the action (mark as complete) and target resource (module item). It distinguishes from siblings like 'canvas_get_module_item' (read) and 'canvas_list_module_items' (list), but doesn't explicitly differentiate from potential completion-related tools that might exist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a module item in an incomplete state), when not to use it, or what alternatives exist for checking completion status (like 'canvas_get_module_item').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_post_to_discussionC
Post a message to a discussion topic
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course | |
| message | Yes | Message content | |
| topic_id | Yes | ID of the discussion topic |
TDQS
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. It states the action ('Post a message') which implies a write operation, but doesn't disclose any behavioral traits such as required permissions, whether the post is editable/deletable, rate limits, or what happens on success/failure. This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately understandable without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 insufficient. It doesn't explain what happens after posting (e.g., returns a post ID, confirmation message, or error details), nor does it cover behavioral aspects like permissions or side effects. Given the complexity of a write operation in an educational context, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 three parameters (course_id, topic_id, message) with basic descriptions. The description doesn't add any additional meaning about parameter usage, relationships, or constraints beyond what's in the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Post a message') and target resource ('to a discussion topic'), which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'canvas_create_conversation' or 'canvas_list_discussion_topics', which would require mentioning this is specifically for posting within existing discussion topics rather than creating new conversations or listing topics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 an existing discussion topic), exclusions, or comparisons to sibling tools like 'canvas_create_conversation' for direct messaging or 'canvas_list_discussion_topics' for viewing discussions. Usage is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_start_quiz_attemptC
Start a new quiz attempt
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course | |
| quiz_id | Yes | ID of the quiz |
TDQS
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 action ('start') but doesn't explain what 'starting a quiz attempt' entailsโwhether it's a read-only preview, a timed session, requires authentication, has side effects, or what the expected outcome is. This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words, making it easy to parse and front-loaded. It efficiently conveys the core action without unnecessary elaboration, earning full marks for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of starting a quiz attempt (likely a write operation with side effects), no annotations, and no output schema, the description is insufficient. It lacks details on permissions, return values, error conditions, or how it fits into the broader quiz workflow, leaving the agent under-informed for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with clear documentation for 'course_id' and 'quiz_id'. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or contextual constraints. This meets the baseline for high schema coverage but doesn't enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Start a new quiz attempt' clearly states the action (start) and resource (quiz attempt), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'canvas_get_quiz' or 'canvas_submit_assignment', which would require more specificity 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.
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., quiz must exist, user must be enrolled), exclusions, or how it relates to sibling tools like 'canvas_get_quiz' or 'canvas_submit_assignment', leaving the agent with minimal context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_submit_assignmentC
Submit work for an assignment
| Name | Required | Description | Default |
|---|---|---|---|
| assignment_id | Yes | ID of the assignment | |
| body | No | Text content for text submissions | |
| course_id | Yes | ID of the course | |
| file_ids | No | File IDs for file submissions | |
| submission_type | Yes | Type of submission | |
| url | No | URL for URL submissions |
TDQS
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. 'Submit work' implies a write/mutation operation, but the description doesn't mention permission requirements, whether submissions are final or can be edited, rate limits, or what happens on success/failure. For a mutation tool with zero 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a tool with good schema documentation and gets straight to the point without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 insufficient. It doesn't explain what happens after submission (confirmation? grade?), error conditions, or important constraints. The combination of mutation behavior, multiple parameters, and lack of structured metadata requires more descriptive context than provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 6 parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema (like explaining the relationship between submission_type and other parameters). 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Submit work') and target resource ('for an assignment'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from potential siblings like 'canvas_get_submission' or 'canvas_submit_grade', which reduces clarity in the broader tool ecosystem.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. There's no mention of prerequisites (like needing to be enrolled in the course), timing constraints (submission deadlines), or how this differs from related tools like 'canvas_get_submission' (viewing submissions) or 'canvas_submit_grade' (grading submissions).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_submit_gradeB
Submit a grade for a student's assignment (teacher only)
| Name | Required | Description | Default |
|---|---|---|---|
| assignment_id | Yes | ID of the assignment | |
| comment | No | Optional comment on the submission | |
| course_id | Yes | ID of the course | |
| grade | Yes | Grade to submit (number or letter grade) | |
| user_id | Yes | ID of the student |
TDQS
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 mentions the 'teacher only' permission requirement, which is helpful, but doesn't address other critical aspects like whether this is a destructive/mutative operation (implied by 'submit' but not explicit), rate limits, error conditions, or what happens on success/failure. For a grade submission tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('submit a grade for a student's assignment') and includes the permission constraint ('teacher only') without any wasted words. Every part of the description earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 the tool returns, error handling, side effects, or important behavioral constraints beyond the basic permission note. Given the complexity of grade submission and the lack of structured data, the description should provide more context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, meaning all parameters are documented in the input schema itself. The description doesn't add any additional meaning about the parameters beyond what's already in the schema (e.g., it doesn't explain grade formats beyond 'number or letter grade' which is already 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('submit a grade') and resource ('for a student's assignment'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'canvas_get_user_grades' or 'canvas_get_submission' beyond the 'submit' verb, which is why it doesn't reach 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes 'teacher only' which provides some usage context about permissions, but it doesn't explicitly state when to use this tool versus alternatives like 'canvas_update_assignment' or 'canvas_submit_assignment', nor does it mention prerequisites or exclusions beyond the role requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_update_assignmentC
Update an existing assignment
| Name | Required | Description | Default |
|---|---|---|---|
| assignment_id | Yes | ID of the assignment to update | |
| course_id | Yes | ID of the course | |
| description | No | New assignment description | |
| due_at | No | New due date (ISO format) | |
| name | No | New name for the assignment | |
| points_possible | No | New maximum points | |
| published | No | Whether the assignment is published |
TDQS
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. 'Update an existing assignment' implies a mutation operation, but it doesn't describe what happens if fields are omitted (partial vs. full update), whether changes are reversible, permission requirements, rate limits, or error conditions. This leaves significant gaps for an agent to understand the tool's behavior beyond basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly. No unnecessary details or fluff are included, which is ideal for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a mutation tool with 7 parameters, no annotations, and no output schema, the description is incomplete. It lacks behavioral context (e.g., update semantics, error handling), usage guidelines, and output details. While the schema covers parameters well, the description fails to provide the broader context needed for safe and effective tool invocation by an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters clearly documented in the input schema (e.g., assignment_id, course_id, description). The description adds no additional parameter semantics beyond what the schema provides, such as format examples or constraints. However, since the schema is comprehensive, a baseline score of 3 is appropriate as the description doesn't need to compensate for gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update an existing assignment' clearly states the action (update) and resource (assignment), which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like canvas_update_course or canvas_update_user_profile, though the resource name makes the distinction obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 course_id and assignment_id), when not to use it, or how it differs from related tools like canvas_create_assignment or canvas_get_assignment. The agent must infer usage from the tool name and parameters alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_update_courseC
Update an existing course in Canvas
| Name | Required | Description | Default |
|---|---|---|---|
| allow_student_forum_attachments | No | Whether students can add forum attachments | |
| allow_student_wiki_edits | No | Whether students can edit the wiki | |
| allow_wiki_comments | No | Whether wiki comments are allowed | |
| apply_assignment_group_weights | No | Whether to apply assignment group weights | |
| course_code | No | New course code | |
| course_id | Yes | ID of the course to update | |
| end_at | No | New end date (ISO format) | |
| hide_final_grades | No | Whether to hide final grades | |
| is_public | No | Whether the course is public | |
| is_public_to_auth_users | No | Whether the course is public to authenticated users | |
| license | No | Course license | |
| name | No | New name for the course | |
| open_enrollment | No | Whether the course has open enrollment | |
| public_description | No | Public description of the course | |
| public_syllabus | No | Whether the syllabus is public | |
| public_syllabus_to_auth | No | Whether the syllabus is public to authenticated users | |
| restrict_enrollments_to_course_dates | No | Whether to restrict enrollments to course start/end dates | |
| self_enrollment | No | Whether the course allows self enrollment | |
| start_at | No | New start date (ISO format) | |
| syllabus_body | No | Updated syllabus content | |
| time_zone | No | Course time zone |
TDQS
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 basic action ('Update'). It doesn't cover critical aspects like required permissions, whether changes are reversible, rate limits, error conditions, or what the response looks like (no output schema). This is inadequate for a mutation tool with 21 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately scannable and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex mutation tool with 21 parameters, no annotations, and no output schema, the description is severely incomplete. It lacks behavioral context, usage guidance, parameter insights, and response information. The high schema coverage helps but doesn't compensate for the missing operational and contextual details needed for effective tool use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter-specific information beyond what's already in the schema (which has 100% coverage). It doesn't explain relationships between parameters, provide examples, or clarify semantics like partial updates. With high schema coverage, the baseline is 3, but the description doesn't enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and resource ('an existing course in Canvas'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'canvas_update_assignment' or 'canvas_update_user_profile' beyond the resource type, missing explicit sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 course ID), when not to use it, or how it differs from similar tools like 'canvas_create_course' or 'canvas_get_course' in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvas_update_user_profileC
Update current user's profile
| Name | Required | Description | Default |
|---|---|---|---|
| bio | No | User's bio | |
| name | No | User's name | |
| short_name | No | User's short name | |
| time_zone | No | User's time zone | |
| title | No | User's title |
TDQS
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. 'Update' implies a mutation operation, but the description doesn't mention required permissions, whether changes are reversible, rate limits, or what happens when only partial parameters are provided. For a mutation tool with zero annotation coverage, this leaves significant behavioral questions unanswered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a straightforward update operation and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 5 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't address authentication requirements, error conditions, partial updates, or what the tool returns. The agent lacks crucial context needed to use this tool effectively and safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the schema. The description doesn't add any parameter-specific information beyond what's in the schema (bio, name, short_name, time_zone, title). It doesn't explain relationships between parameters or provide examples of valid values. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and resource ('current user's profile'), making the purpose immediately understandable. It distinguishes from sibling tools like canvas_get_user_profile (read vs write) and canvas_update_assignment/course (different resources). However, it doesn't specify which profile fields can be updated, leaving some ambiguity about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 (authentication needed), when not to use it, or how it differs from canvas_update_assignment or canvas_update_course. The agent must infer usage 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
54 tool updates
v1.0.0- First observed
canvas_create_account_report - First observed
canvas_create_assignment - First observed
canvas_create_conversation - First observed
canvas_create_course - First observed
canvas_create_quiz - First observed
canvas_create_user - First observed
canvas_enroll_user - First observed
canvas_get_account - First observed
canvas_get_account_reports - First observed
canvas_get_assignment - First observed
canvas_get_conversation - First observed
canvas_get_course - First observed
canvas_get_course_grades - First observed
canvas_get_dashboard - First observed
canvas_get_dashboard_cards - First observed
canvas_get_discussion_topic - First observed
canvas_get_file - First observed
canvas_get_module - First observed
canvas_get_module_item - First observed
canvas_get_page - First observed
canvas_get_quiz - First observed
canvas_get_rubric - First observed
canvas_get_submission - First observed
canvas_get_syllabus - First observed
canvas_get_upcoming_assignments - First observed
canvas_get_user_grades - First observed
canvas_get_user_profile - First observed
canvas_health_check - First observed
canvas_list_account_courses - First observed
canvas_list_account_users - First observed
canvas_list_announcements - First observed
canvas_list_assignment_groups - First observed
canvas_list_assignments - First observed
canvas_list_calendar_events - First observed
canvas_list_conversations - First observed
canvas_list_courses - First observed
canvas_list_discussion_topics - First observed
canvas_list_files - First observed
canvas_list_folders - First observed
canvas_list_module_items - First observed
canvas_list_modules - First observed
canvas_list_notifications - First observed
canvas_list_pages - First observed
canvas_list_quizzes - First observed
canvas_list_rubrics - First observed
canvas_list_sub_accounts - First observed
canvas_mark_module_item_complete - First observed
canvas_post_to_discussion - First observed
canvas_start_quiz_attempt - First observed
canvas_submit_assignment - First observed
canvas_submit_grade - First observed
canvas_update_assignment - First observed
canvas_update_course - First observed
canvas_update_user_profile
TDQS
Scored across 54 tools
Most tools have distinct purposes targeting specific Canvas resources and actions, with clear naming like 'canvas_get_assignment' vs 'canvas_list_assignments'. However, some tools like 'canvas_get_dashboard' and 'canvas_get_dashboard_cards' could potentially overlap in functionality, and there are multiple 'get' tools that might be confused if the agent doesn't carefully read descriptions.
All tools follow a perfect 'canvas_verb_noun' pattern consistently throughout the entire set. The naming convention is uniform with snake_case, clear verbs (create, get, list, update, etc.), and specific nouns, making it highly predictable and readable.
With 54 tools, this is an extremely large set that feels heavy and overwhelming for a typical MCP server. While Canvas is a complex platform, this many tools suggests poor scoping and could lead to confusion or inefficiency in agent usage, as it's well beyond the typical 3-15 tool range for well-scoped servers.
The tool set provides comprehensive coverage of the Canvas LMS domain, including CRUD operations for accounts, courses, assignments, quizzes, users, and more, plus specialized actions like enrollment, grading, and module completion. There are no obvious gapsโit supports full lifecycle management and common workflows.
Maintenance
Related MCP Connectors
Model Context Protocol server for Studex tools, notifications, and profile integrations
The Canva MCP server connects AI assistants (like Claude, ChatGPT, and Cursor) to Canva's API, enabling them to create and manage designs directly within chat conversations. Key capabilities include generating new designs from prompts, autofilling templates, searching and resizing existing designs, importing files from URLs, exporting designs as PDFs or images, and managing folders and comments without switching between tools.
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yoโฆ
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA local MCP server for Canvas LMS that enables querying courses, assignments, grades, modules, and more from any MCP-compatible AI client.9 npmMIT
- FlicenseNot gradedqualityDmaintenanceMCP server for Canvas LMS that exposes courses, assignments, modules, pages, files, grades, and submissions as tools for AI agents.-
- AlicenseNot gradedqualityDmaintenanceA teacher-facing MCP server that wraps the Canvas LMS REST API, enabling AI assistants to create and manage course content across multiple Canvas courses.9 npmMIT
- AlicenseNot gradedqualityBmaintenanceA remote MCP server for querying Canvas LMS courses, assignments, and grades. Enables natural language interaction with Canvas data via MCP clients like Claude Desktop.9 npmMIT