Skip to main content
Glama

EduBase MCP Server

Official
by EduBase
organizations.ts17.8 kB
import { Tool } from "@modelcontextprotocol/sdk/types.js"; /* Tool definitions */ export const EDUBASE_API_TOOLS_ORGANIZATIONS: Tool[] = [ // GET /organizations - List owned and managed organizations { name: 'edubase_get_organizations', description: "List owned and managed organizations.", inputSchema: { type: 'object', properties: { search: { type: 'string', description: 'search string to filter results', }, limit: { type: 'number', description: 'limit number of results (default: 16)', }, page: { type: 'number', description: 'page number (default: 1), not used in search mode!', }, }, required: [], }, }, // GET /organization - Get/check organization { name: 'edubase_get_organization', description: "Get/check organization.", inputSchema: { type: 'object', properties: { organization: { type: 'string', description: 'organization identification string', }, }, required: ['organization'], }, }, // POST /organization - Create an organization { name: 'edubase_post_organization', description: "Create an organization.", inputSchema: { type: 'object', properties: { name: { type: 'string', description: 'title of the organization', }, description: { type: 'string', description: 'optional short description', }, domain: { type: 'string', description: 'domain name (FQDN) for the organization without www prefix, needs special privileges to set!', }, website: { type: 'string', description: 'homepage URL', }, email: { type: 'string', description: 'contact email address', }, phone: { type: 'string', description: 'contact phone number', }, }, required: ['name'], }, }, // PATCH /organization - Update organization { name: 'edubase_patch_organization', description: "Update organization.", inputSchema: { type: 'object', properties: { organization: { type: 'string', description: 'organization identification string', }, }, required: ['organization'], }, }, // DELETE /organization - Remove organization { name: 'edubase_delete_organization', description: "Remove organization.", inputSchema: { type: 'object', properties: { organization: { type: 'string', description: 'organization identification string', }, }, required: ['organization'], }, }, // GET /organization:members - List all members in an organization { name: 'edubase_get_organization_members', description: "List all members in an organization.", inputSchema: { type: 'object', properties: { organization: { type: 'string', description: 'organization identification string', }, }, required: ['organization'], }, }, // POST /organization:members - Assign user(s) to an organization { name: 'edubase_post_organization_members', description: "Assign user(s) to an organization. Updates memberships if already member of the organization.", inputSchema: { type: 'object', properties: { organization: { type: 'string', description: 'organization identification string', }, users: { type: 'string', description: 'comma-separated list of user identification strings', }, department: { type: 'string', description: 'optional name of department', }, permission_organization: { type: 'string', description: 'optional permission level to organization (member / teacher / reporter / supervisor / admin) (default: member)', }, permission_content: { type: 'string', description: 'optional permission level to contents in organization (none / view / report / control / modify / grant / admin) (default: none)', }, notify: { type: 'boolean', description: 'notify users (default: false)', }, }, required: ['organization', 'users'], }, }, // DELETE /organization:members - Remove user(s) from an organization { name: 'edubase_delete_organization_members', description: "Remove user(s) from an organization.", inputSchema: { type: 'object', properties: { organization: { type: 'string', description: 'organization identification string', }, users: { type: 'string', description: 'comma-separated list of user identification strings', }, }, required: ['organization', 'users'], }, }, // POST /organizations:members - Assign user(s) to organization(s) { name: 'edubase_post_organizations_members', description: "Assign user(s) to organization(s). Updates memberships if already member of an organization.", inputSchema: { type: 'object', properties: { organizations: { type: 'string', description: 'comma-separated list of organization identification strings', }, users: { type: 'string', description: 'comma-separated list of user identification strings', }, department: { type: 'string', description: 'optional name of department', }, permission_organization: { type: 'string', description: 'optional permission level to organization (member / teacher / reporter / supervisor / admin) (default: member)', }, permission_content: { type: 'string', description: 'optional permission level to contents in organization (none / view / report / control / modify / grant / admin) (default: none)', }, notify: { type: 'boolean', description: 'notify users (default: false)', }, }, required: ['organizations', 'users'], }, }, // GET /user:organizations - List all organizations a user is member of { name: 'edubase_get_user_organizations', description: "List all organizations a user is member of.", inputSchema: { type: 'object', properties: { user: { type: 'string', description: 'user identification string', }, }, required: ['user'], }, }, // POST /user:organizations - Assign user to organization(s) { name: 'edubase_post_user_organizations', description: "Assign user to organization(s). Updates membership if already member of an organization.", inputSchema: { type: 'object', properties: { user: { type: 'string', description: 'user identification string', }, organizations: { type: 'string', description: 'comma-separated list of organization identification strings', }, department: { type: 'string', description: 'optional name of department', }, permission_organization: { type: 'string', description: 'optional permission level to organization (member / teacher / reporter / supervisor / admin) (default: member)', }, permission_content: { type: 'string', description: 'optional permission level to contents in organization (none / view / report / control / modify / grant / admin) (default: none)', }, notify: { type: 'boolean', description: 'notify user (default: false)', }, }, required: ['user', 'organizations'], }, }, // DELETE /user:organizations - Remove user from organization(s) { name: 'edubase_delete_user_organizations', description: "Remove user from organization(s).", inputSchema: { type: 'object', properties: { user: { type: 'string', description: 'user identification string', }, organizations: { type: 'string', description: 'comma-separated list of organization identification strings', }, }, required: ['user', 'organizations'], }, }, // GET /organization:webhook - Get/check webhook configured in organization { name: 'edubase_get_organization_webhook', description: "Get/check webhook configured in organization.", inputSchema: { type: 'object', properties: { organization: { type: 'string', description: 'organization identification string', }, webhook: { type: 'string', description: 'webhook identification string', }, }, required: ['organization', 'webhook'], }, }, // POST /organization:webhook - Create a webhook for an organization { name: 'edubase_post_organization_webhook', description: "Create a webhook for an organization.", inputSchema: { type: 'object', properties: { organization: { type: 'string', description: 'organization identification string', }, name: { type: 'string', description: 'title of the webhook', }, trigger_event: { type: 'string', description: "Type of event to trigger webhook:\n" + "- exam-play-result: triggers when a user (must be member of the organization) completes an exam in the organization\n" + "- quiz-play-result: triggers when a user (must be member of the organization) completes a quiz in practice mode in the organization\n" + "- api: triggers when a manual API call is made (useful for testing and debugging)", }, endpoint: { type: 'string', description: 'URL to send webhook notifications to', }, method: { type: 'string', description: "HTTP method to use for webhook notifications (default: POST)\n" + "- POST\n" + "- GET", }, authentication: { type: 'string', description: "Type of authentication (default: none):\n" + "- none: no authentication\n" + "- key: use a secret key (or password) for authentication", }, authentication_send: { type: 'string', description: "How to send authentication data (default: data):\n" + "- header: as header field\n" + "- bearer: as Bearer token in Authorization header\n" + "- data: as data field (in body or query string)", }, authentication_send_header: { type: 'string', description: 'name of header field to send authentication data in, required if authentication is set to key and authentication_send is set to header', }, authentication_send_data: { type: 'string', description: 'name of data field to send authentication data in, required if authentication is set to key and authentication_send is set to data', }, authentication_key: { type: 'string', description: 'secret key (or password) to use for authentication, required if authentication is set to key', }, authentication_key_custom: { type: 'string', description: 'custom field name to use as the authentication key, required if authentication is set to key, mutually exclusive with authentication_key', }, extra_data: { type: 'string', description: 'additional data (as JSON encoded string) to send with the webhook notification', }, retry: { type: 'string', description: "How to retry webhook notifications on failure (default: error):\n" + "- none: no retry\n" + "- error: delayed retry on any error", }, }, required: ['organization', 'name', 'trigger_event', 'endpoint'], }, }, // PATCH /organization:webhook - Update organizational webhook { name: 'edubase_patch_organization_webhook', description: "Update organizational webhook.", inputSchema: { type: 'object', properties: { organization: { type: 'string', description: 'organization identification string', }, webhook: { type: 'string', description: 'webhook identification string', }, active: { type: 'boolean', description: 'enable or disable webhook', }, }, required: ['organization', 'webhook'], }, }, // DELETE /organization:webhook - Remove webhook from organization { name: 'edubase_delete_organization_webhook', description: "Remove organizational webhook.", inputSchema: { type: 'object', properties: { organization: { type: 'string', description: 'organization identification string', }, webhook: { type: 'string', description: 'webhook identification string', }, }, required: ['organization', 'webhook'], }, }, // POST /organization:webhook:trigger - Trigger an organizational webhook call with optional custom payload { name: 'edubase_post_organization_webhook_trigger', description: "Trigger an organizational webhook call with optional custom payload. Only triggers webhooks with **trigger_event** set to `api`!.", inputSchema: { type: 'object', properties: { organization: { type: 'string', description: 'organization identification string', }, webhook: { type: 'string', description: 'webhook identification string', }, data: { type: 'string', description: 'custom payload data to be sent with the webhook call, must be a valid JSON string', }, }, required: ['organization', 'webhook'], }, }, ]; /* Output schema definitions */ export const EDUBASE_API_TOOLS_ORGANIZATIONS_OUTPUT_SCHEMA: object = { // GET /organizations - List owned and managed organizations edubase_get_organizations: { type: 'array', items: { type: 'object', properties: { organization: { type: 'string', description: 'organization identification string', }, id: { type: 'string', description: 'external unique organization identifier (if set for the organization)', }, name: { type: 'string', description: 'title of the organization', }, }, }, }, // GET /organization - Get/check organization edubase_get_organization: { type: 'object', properties: { organization: { type: 'string', description: 'organization identification string', }, id: { type: 'string', description: 'external unique organization identifier (if set for the organization)', }, name: { type: 'string', description: 'title of the organization', }, }, }, // POST /organization - Create an organization edubase_post_organization: { type: 'object', properties: { organization: { type: 'string', description: 'organization identification string', }, }, }, // PATCH /organization - Update organization edubase_patch_organization: {}, // DELETE /organization - Remove organization edubase_delete_organization: {}, // GET /organization:members - List all members in an organization edubase_get_organization_members: { type: 'array', items: { type: 'object', properties: { user: { type: 'string', description: 'user identification string', }, name: { type: 'string', description: 'name of the member', }, department: { type: 'string', description: 'name of the department (if member)', }, permission: { type: 'array', items: { organization: { type: 'string', description: 'permission level to organization', }, content: { type: 'string', description: 'permission level to contents in organization', }, }, }, }, }, }, // POST /organization:members - Assign user(s) to an organization edubase_post_organization_members: {}, // DELETE /organization:members - Remove user(s) from an organization edubase_delete_organization_members: {}, // POST /organizations:members - Assign user(s) to organization(s) edubase_post_organizations_members: {}, // GET /user:organizations - List all organizations a user is member of edubase_get_user_organizations: { type: 'array', items: { type: 'object', properties: { organization: { type: 'string', description: 'organization identification string', }, id: { type: 'string', description: 'external unique organization identifier (if set for the organization)', }, name: { type: 'string', description: 'title of the organization', }, link: { type: 'string', description: 'link to the organization manager page', }, department: { type: 'string', description: 'name of the department (if member)', }, permission: { type: 'array', items: { type: 'object', properties: { organization: { type: 'string', description: 'permission level to organization', }, content: { type: 'string', description: 'permission level to contents in organization', }, }, }, }, }, }, }, // POST /user:organizations - Assign user to organization(s) edubase_post_user_organizations: {}, // DELETE /user:organizations - Remove user from organization(s) edubase_delete_user_organizations: {}, // GET /organization:webhook - Get/check webhook configured in organization edubase_get_organization_webhook: { type: 'object', properties: { organization: { type: 'string', description: 'organization identification string', }, webhook: { type: 'string', description: 'webhook identification string', }, name: { type: 'string', description: 'title of the webhook', }, active: { type: 'boolean', description: 'webhook is active', }, }, }, // POST /organization:webhook - Create a webhook for an organization edubase_post_organization_webhook: { type: 'object', properties: { organization: { type: 'string', description: 'organization identification string', }, webhook: { type: 'string', description: 'webhook identification string', }, }, }, // PATCH /organization:webhook - Update organizational webhook edubase_patch_organization_webhook: {}, // DELETE /organization:webhook - Remove webhook from organization edubase_delete_organization_webhook: {}, // POST /organization:webhook:trigger - Trigger an organizational webhook call with optional custom payload edubase_post_organization_webhook_trigger: {}, };

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/EduBase/MCP'

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