Canopy
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CANOPY_SOURCE | No | Reader selection: synthetic, obd, or can_dbc (default synthetic) | synthetic |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_available_signalsA | Returns the complete list of signals available from the currently connected data source, with units and typical ranges. Call this FIRST whenever you are unsure whether a signal exists. Signal availability depends entirely on the data source, so the only reliable way to know what you can answer is to ask. If the signal a user asks about does not appear in this list, it is NOT available: do not attempt to retrieve it, do not estimate it, and do not substitute a related signal. Tell the user the signal is unavailable and say which source is connected. |
| summarize_sessionA | Returns a structural overview of a data session: which signals are present, how many samples each has, where there are gaps in coverage, and a count of findings by severity. Use this BEFORE detailed analysis to understand what data actually exists. This tool returns no interpretation — only structure. It will not tell you what a finding means; call run_diagnostic_rules for that. coverage_gaps matters: a signal can be 'present' while missing the exact interval a user is asking about. |
| get_signalA | Retrieves one signal over a time range, returned as a timeseries with explicit units and timestamps. The Different data sources have very different sample rates. A request-response source may return a SINGLE sample (a 'point read'), with actual_sample_rate_hz set to null. Do NOT perform timing analysis on a point read — check actual_sample_rate_hz before reasoning about how a signal changed over time. Results are downsampled to max_samples. If Keep the time range bounded to the interval you actually need. An excessively wide window returns a window_too_large error, not data — and because results are downsampled to max_samples anyway, a wider window buys no extra resolution. |
| run_diagnostic_rulesA | Runs the domain diagnostic rule set over a time range and returns structured findings, each citing the specific data samples that support it. Every finding includes Rules requiring signals the current source cannot provide are SKIPPED, not failed. Check |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/kruslim/canopy'
If you have feedback or need assistance with the MCP directory API, please join our Discord server