Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
POPULI_API_KEYYesA Populi API key token, found in Account & Settings > API > Keys. Sent as a bearer token to POPULI_BASE_URL only.
POPULI_BASE_URLYesYour Populi instance URL, e.g. https://yourschool.populiweb.com. Must be https; a trailing /api2 is optional.
POPULI_FILES_DIRNoThe folder downloads are saved to and uploads are read from.~/populi-mcp-files
POPULI_TIMEOUT_MSNoHow long one Populi request may take, from 1000 to 600000 milliseconds.120000
POPULI_ALLOW_WRITESNoSet to true to enable the populi_write tool. Default is read-only.false

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
populi_statusA

Shows which Populi instance this server talks to, whether the key is a sandbox key, and whether writes are enabled. Set verify to make one live request that checks the key works.

populi_search_apiA

Search the Populi API v2 route catalog (697 routes across 180 models) by keyword, e.g. 'application', 'enrollments', 'invoice', 'course offering'. Returns route ids with method and path. Use this first to find the right route, then populi_describe_api for its parameters.

populi_describe_apiA

Full reference for one route: path placeholders, required/optional parameters with types, expandable properties, filter conditions, required Populi roles, and a link to the docs. Pass a route id from populi_search_api, or a concrete method and path.

populi_getA

GET any Populi API v2 route (read-only). Path is under /api2, e.g. /people/123, /academicterms, /people/123/leads. Lists return up to 200 records per page; use page, limit, or all_pages. Use expand to inline related records (see populi_describe_api for the allowed names) and filter to narrow lists. A filter looks like {"0":{"logic":"ALL","fields":[{"name":"first_name","value":{"type":"CONTAINS","text":"john"},"positive":1}]}}. Populi allows about 50 requests/min per key, so prefer one filtered call over many unfiltered ones. Routes that return a file (PDF/XLS exports, transcripts, Data Slicer results, file downloads) can't be shown here: use populi_download for those. If a rate limit stops all_pages part-way, the pages already fetched are returned with a next_page to resume from.

populi_downloadA

GET a Populi route and save the response to a file in the files folder instead of returning it. Use it for routes that return files (PDF/XLS/CSV exports, transcripts and grade reports, Data Slicer results, file and backup downloads, images) and to keep a big list or full export out of the conversation (use all_pages). Takes the same arguments as populi_get. Never overwrites: an existing name gets -1, -2, ... appended. Returns the saved path and a short preview.

populi_find_peopleA

Look up people by email address and/or name. Email is an exact match; first and last name are 'contains' matches. Returns Populi's people list: ids, names and status, plus a report_data block with the primary email and phone (contact_primary_email, contact_primary_phone). For full contact records fetch /people/{id} with expand=['email_addresses', 'phone_numbers']. Needs at least one criterion.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.3/5.0

Scored across 6 tools

Disambiguation4/5

The discovery pair (search_api then describe_api) and the GET pair (get vs download) are clearly segmented, with descriptions explicitly stating when to use download over get. The only soft overlaps are populi_find_people versus a filtered populi_get on /people, and status/verify versus a plain get, but both are framed as convenience wrappers with clear boundaries.

Naming Consistency4/5

All tools share the populi_ prefix in snake_case, which is highly predictable. Verb style is slightly mixed (populi_get and populi_download lack a noun object while search_api/describe_api use verb_noun), but no tool breaks convention or casing.

Tool Count5/5

Six tools is well-scoped for a generic API gateway: discovery, introspection, two read execution modes, an identity/status check, and one domain shortcut. Every tool earns its place and none look like filler.

Completeness3/5

Read coverage is essentially complete thanks to the generic populi_get against the whole 697-route catalog, but the surface is read-only while populi_status advertises 'whether writes are enabled', creating a dead end with no create/update/delete or bulk-mutation tool. A task needing a write operation cannot be completed with this set.

Maintenance

ActivityMaintained
ResponsivenessNo issues