Featured

Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 47,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here

Summary

Fetch Canvas LMS courses and assignments via API token

SKILL.md

Fetch Canvas LMS courses and assignments via API token.

Skill metadata

SourceOptional — install with hermes skills install official/productivity/canvas
Pathoptional-skills/productivity/canvas
Version1.0.0
Authorcommunity
LicenseMIT
Platformslinux, macos, windows
TagsCanvas, LMS, Education, Courses, Assignments

Reference: full SKILL.md

info

The following is the complete skill definition that Hermes loads when this skill is triggered. This is what the agent sees as instructions when the skill is active.

Canvas LMS — Course & Assignment Access

Read-only access to Canvas LMS for listing courses and assignments.

Scripts

  • scripts/canvas_api.py — Python CLI for Canvas API calls

Setup

  1. Log in to your Canvas instance in a browser
  2. Go to Account → Settings (click your profile icon, then Settings)
  3. Scroll to Approved Integrations and click + New Access Token
  4. Name the token (e.g., "Hermes Agent"), set an optional expiry, and click Generate Token
  5. Copy the token and add to ${HERMES_HOME:-~/.hermes}/.env:
CANVAS_API_TOKEN=your_token_here
CANVAS_BASE_URL=https://yourschool.instructure.com

The base URL is whatever appears in your browser when you're logged into Canvas (no trailing slash).

Usage

CANVAS="python $HERMES_HOME/skills/productivity/canvas/scripts/canvas_api.py"

# List all active courses
$CANVAS list_courses --enrollment-state active

# List all courses (any state)
$CANVAS list_courses

# List assignments for a specific course
$CANVAS list_assignments 12345

# List assignments ordered by due date
$CANVAS list_assignments 12345 --order-by due_at

Output Format

list_courses returns:

[{"id": 12345, "name": "Intro to CS", "course_code": "CS101", "workflow_state": "available", "start_at": "...", "end_at": "..."}]

list_assignments returns:

[{"id": 67890, "name": "Homework 1", "due_at": "2025-02-15T23:59:00Z", "points_possible": 100, "submission_types": ["online_upload"], "html_url": "...", "description": "...", "course_id": 12345}]

Note: Assignment descriptions are truncated to 500 characters. The html_url field links to the full assignment page in Canvas.

API Reference (curl)

# List courses
curl -s -H "Authorization: Bearer $CANVAS_API_TOKEN" \
"$CANVAS_BASE_URL/api/v1/courses?enrollment_state=active&per_page=10"

# List assignments for a course
curl -s -H "Authorization: Bearer $CANVAS_API_TOKEN" \
"$CANVAS_BASE_URL/api/v1/courses/COURSE_ID/assignments?per_page=10&order_by=due_at"

Canvas uses Link headers for pagination. The Python script handles pagination automatically.

Rules

  • This skill is read-only — it only fetches data, never modifies courses or assignments
  • On first use, verify auth by running $CANVAS list_courses — if it fails with 401, guide the user through setup
  • Canvas rate-limits to ~700 requests per 10 minutes; check X-Rate-Limit-Remaining header if hitting limits

Troubleshooting

ProblemFix
401 UnauthorizedToken invalid or expired — regenerate in Canvas Settings
403 ForbiddenToken lacks permission for this course
Empty course listTry --enrollment-state active or omit the flag to see all states
Wrong institutionVerify CANVAS_BASE_URL matches the URL in your browser
Timeout errorsCheck network connectivity to your Canvas instance