Skip to main content
Glama

Automation Squad - MCP for Samsara

Complete Samsara Fleet Management integration for Claude AI
21 tools | Expert knowledge built-in | Beta


⚠️ Important Disclaimer

UNOFFICIAL INTEGRATION: This is an unofficial third-party MCP server. It is:

  • NOT affiliated with, endorsed by, or sponsored by Samsara Inc.

  • NOT an official Samsara product

  • ✅ Built using Samsara's public API with your own API credentials

  • ✅ Fully compliant with Samsara's API terms of service

Samsara® is a registered trademark of Samsara Inc.

See NOTICE for the full third-party disclaimer. Licence: MIT.


Related MCP server: Samsara Fleet MCP Server

🎯 What This Does

Connects Claude AI to the Samsara Fleet Management API with:

21 tools across vehicles, routes, drivers, addresses, webhooks and contacts
Expert knowledge built into every tool description
Automatic state preservation (stop IDs, route data)
Smart rate limiting (won't hit API limits)
Route optimization (built-in efficiency algorithms)
Production best practices (error handling, retries)

Tools Included

Vehicle Management (4 tools)

  • List vehicles, get vehicle details, real-time locations, statistics

Route Management (6 tools)Our specialty

  • Create, update, delete routes

  • Auto-preserve stop state (critical for time tracking!)

  • Route optimization (minimize distance/time)

  • List and get route details

Driver Management (4 tools)

  • List drivers, get driver details

  • Hours of Service (HOS) compliance tracking

  • Safety event monitoring

Address & Location (2 tools)

  • Create and manage saved addresses

  • Geofence integration

Webhook Integration (3 tools)

  • Real-time event notifications

  • Route updates, vehicle events, etc.

Contact Management (2 tools)

  • Create and manage contacts for route stops


🚀 Quick Start

Prerequisites

  • Node.js 18+ installed

  • Samsara API Token (Get one here)

  • Claude Desktop or any MCP-compatible client

Installation

git clone https://github.com/AutomationSquadOS/mcp-samsara
cd mcp-samsara
npm install
npm run build

Note: the npm package @automationsquad/mcp-samsara is not published yet, so clone-and-build is the only install path that works today. When it ships, an npx one-liner will replace the steps above.

Configuration

Add to your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "samsara": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-samsara/build/index.js"],
      "env": {
        "SAMSARA_API_TOKEN": "your-api-token-here",
        "SAMSARA_BASE_URL": "https://api.samsara.com"
      }
    }
  }
}

Replace /absolute/path/to/mcp-samsara with wherever you cloned the repo. The path must be absolute — Claude Desktop does not resolve ~ or relative paths.

EU customers: Use https://api.eu.samsara.com for SAMSARA_BASE_URL

Restart Claude

Quit and reopen Claude Desktop. You should see the Samsara tools available!


💡 Example Usage

Create a route with optimization

Create a delivery route called "Morning Zone 1" with these stops:
1. Warehouse: 123 Main St, Springfield
2. Customer A: 456 Oak Ave, Springfield  
3. Customer B: 789 Pine Rd, Springfield
4. Return to warehouse

Then optimize it for minimum distance.

Claude will:

  1. Create the route with proper addresses

  2. Automatically optimize stop order

  3. Preserve all stop IDs for tracking

  4. Assign vehicle/driver if requested

Track vehicle locations

Show me real-time locations for all vehicles currently on routes

Monitor driver compliance

Get HOS logs for driver John Smith for the past week and check for any violations

🔥 What Makes This Better

vs. Building Direct API Integration

Feature

Direct API

This MCP

Setup time

Days

Minutes

Stop state preservation

Manual

Automatic

Rate limiting

DIY

Built-in

Error handling

Custom

Production-tested

Route optimization

Build yourself

Included

Best practices

Research needed

Built-in

vs. Official MCP (if one existed)

Feature

Hypothetical Official

Automation Squad

Tool count

~8-12 basic

21

API coverage

~10%

Fleet, routes, drivers, HOS, webhooks

Expert knowledge

✅ Built-in

Route optimization

✅ Included

State preservation

Manual

Automatic

Updates

Sporadic

Continuous


🛠️ Architecture

Rate Limiting

Conservative 5 requests/second with automatic throttling and retry logic.

Error Handling

  • Automatic retry on 429 (rate limit)

  • Clear error messages

  • Graceful degradation

State Preservation

Critical feature: When updating routes, we automatically:

  1. Fetch existing route

  2. Extract stop IDs

  3. Preserve them in updates

  4. Prevent data loss

This is a best practice that prevents losing arrival/departure times.


📚 Documentation

Environment Variables

Variable

Required

Default

Description

SAMSARA_API_TOKEN

✅ Yes

-

Your Samsara API token

SAMSARA_BASE_URL

No

https://api.samsara.com

API base URL (use EU endpoint if needed)

Tool Naming Convention

All tools are prefixed with samsara_ for clarity:

  • samsara_list_vehicles

  • samsara_create_route

  • samsara_get_driver_hos

  • etc.


🤝 TMS Integration

Use externalIds in routes/vehicles/drivers to link with your TMS:

{
  "externalIds": {
    "tmsOrderId": "ORD-12345",
    "customerId": "CUST-789"
  }
}

Then query by external ID:

Find the route linked to TMS order ORD-12345

🐛 Troubleshooting

"Error: SAMSARA_API_TOKEN environment variable is required"

Set your API token in the Claude config file (see Configuration above).

"Samsara API error (401): Unauthorized"

Your API token is invalid or expired. Generate a new one in Samsara dashboard.

"Samsara API error (429): Too Many Requests"

The MCP will automatically retry. If you see this often, you may have other integrations hitting the API.

Tools not showing in Claude

  1. Check config file syntax (valid JSON)

  2. Restart Claude completely (quit and reopen)

  3. Check Claude logs for errors


📦 What's Included

mcp-samsara/
├── src/
│   └── index.ts          # Main MCP server
├── build/                # Compiled JavaScript
├── package.json          # NPM package config
├── tsconfig.json         # TypeScript config
├── README.md            # This file
└── LICENSE              # MIT License

🔐 Security

  • Your credentials stay local - API token is stored on your machine

  • No data collection - We don't see your Samsara data

  • Open source - Review the code yourself

  • No phone-home - MCP runs entirely locally


📈 Roadmap

  • Add more tools (dispatch, assets, tags)

  • Support for batch operations

  • Enhanced optimization algorithms

  • Multi-route optimization

  • Fuel cost calculations

  • Compliance reporting tools


🎓 Learn More


💬 Support

Beta Users:


📝 License

MIT License - See LICENSE file for details


🙏 Credits

Built with ❤️ by Automation Squad

Not affiliated with Samsara Inc. This is an independent integration using Samsara's public API.


⭐ More from Automation Squad

Docs, install steps and what this server does not do: automationsquad.com/mcp/samsara

The AI Five — five things worth knowing about AI and automation, weekly. Subscribe free →


Ready to automate your fleet management? Let's go! 🚀

Available Tools

21 tools
samsara_create_addressC

Create a saved address/location in Samsara for reuse in routes

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesAddress name
latitudeNo
longitudeNo
externalIdsNo
formattedAddressNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description bears full burden for behavioral transparency. It does not disclose that latitude and longitude might be required for some use cases or that externalIds is a nested object with unknown structure. There is no mention of idempotency, error behavior, or what happens if the address already exists. The description is too brief to inform an agent about behavioral traits beyond the simple creation action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 10 words, which is highly concise. It front-loads the key action and resource. However, it sacrifices completeness for brevity; one more sentence about parameter usage would improve it without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 parameters (including a nested object), no annotations, and no output schema, the description should explain more about what is required to create an address, what the response contains, and any constraints. The current description is too sparse for an agent to confidently use the tool without guessing about latitude/longitude cooperation or externalIds format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is low (20%), meaning only the 'name' parameter has a schema description ('Address name'). The tool description adds 'saved address/location' context but does not explain what latitude/longitude, externalIds, or formattedAddress mean. While the description helps understand the tool's purpose, it does not compensate for the missing parameter documentation. Baseline is 3 due to low coverage, but no additional value beyond the schema's minimal description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it creates a saved address/location in Samsara for reuse in routes. It uses a specific verb ('Create') and resource ('saved address/location'), and the context of 'for reuse in routes' helps distinguish it from sibling tools like samsara_list_addresses or tools about vehicles and routes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus alternatives like samsara_list_addresses or samsara_create_contact. It does not mention prerequisites (e.g., needing coordinates or a formatted address) or cases where one might skip using this tool. The description is silent on usage context entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

samsara_create_contactC

Create a contact (person at a stop location) for route management

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
phoneNo
lastNameNo
firstNameYes
externalIdsNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. The description only says 'Create a contact', which implies a write operation, but doesn't disclose what happens on success, error conditions, idempotency, or whether this creates a standalone contact or requires association with an existing location. The mention of 'stop location' in parentheses is vague.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 11 words, which is concise. However, it is arguably too brief given the lack of annotations and schema descriptions, and the fact that there are 5 parameters including a nested object. The brevity comes at the cost of completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 parameters (including a nested object), no output schema, and no annotations, the description is insufficient. It does not explain what the contact is used for beyond 'route management', how to use the parameters, or what the response looks like. It is complete enough for a simple CRUD tool but fails to clarify the relationship to stops or routes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does not explain any of the 5 parameters, including required 'firstName' or optional fields like 'email', 'phone', 'externalIds'. The term 'externalIds' is a nested object that could benefit from explanation. The description adds no parameter-level value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Create' and the resource 'contact', and adds context that it's for route management. It distinguishes from sibling tools like 'samsara_list_contacts' or 'samsara_create_route' by specifying the resource as a contact. However, it could be more specific about the relationship to routes (e.g., 'assign to a route' vs 'for route management').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. For example, it doesn't mention that this is for creating a contact independent of a route, or that it might be a prerequisite for creating a route. Sibling tools like 'samsara_create_route' or 'samsara_create_address' exist but no differentiation is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

samsara_create_routeA

Create a new route with stops. IMPORTANT: Each stop needs address (with lat/long or formatted address), optional arrival/departure times, and names. Use externalIds to link with your TMS.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for this route (e.g., 'Morning Deliveries Zone 3')
stopsYesArray of stops in order. Each stop must have an address with coordinates or formattedAddress.
driverIdNoOptional: ID of driver assigned to this route
startTimeNoRoute start time (ISO 8601)
vehicleIdNoOptional: ID of vehicle assigned to this route
externalIdsNoKey-value pairs for TMS integration (e.g., {tmsOrderId: '12345'})

TDQS

A3.5/5.0
Behavior2/5

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 only states the creation action and address requirements, but omits critical details like required permissions, side effects, error conditions, or what happens on success. For a mutation tool, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at two sentences, with the core purpose front-loaded and an important note following immediately. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (nested stops object, 6 parameters, no output schema), the description is adequate but not complete. It covers core usage but lacks behavioral context (e.g., return value, error handling, permission requirements). The rich schema descriptions help compensate, but gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds some context (address can be lat/long or formattedAddress, optional times), but mostly reinforces what is already in the schema. It does not independently document any parameters not covered in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Create a new route with stops') using a specific verb and resource. It is easily distinguished from sibling route tools like samsara_list_routes, samsara_update_route, and samsara_delete_route, as it uniquely focuses on creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives important usage tips (use externalIds for TMS, address requirements) but does not explicitly specify when to use this tool vs alternatives (e.g., when to create vs update, or prerequisites like having drivers/vehicles already). Guidance is present but not exclusionary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

samsara_create_webhookB

Create a webhook to receive real-time notifications from Samsara (route updates, vehicle events, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesYour webhook endpoint URL (must be HTTPS)
secretNoOptional secret for webhook signature verification
eventTypesYesArray of event types to subscribe to (e.g., ['route.updated', 'vehicle.location'])

TDQS

B3.2/5.0
Behavior2/5

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 creates a webhook but does not disclose behaviors such as URL validation, idempotency, authentication requirements, rate limits, or error handling. This is minimal disclosure 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that clearly conveys the essential purpose. No wasted words. However, it is very brief and could benefit from a bit more context without sacrificing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 3 well-documented parameters but no output schema. The description does not explain the response format (e.g., webhook ID), error handling, or how to verify webhooks. For a creation tool, more contextual detail about the result would improve completeness, but the schema covers the inputs adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already describes all three parameters. The description adds minor value with examples ('route.updated', 'vehicle.location') and the HTTPS requirement for url. This improves usability but does not go beyond the schema's explicit definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 'webhook', and specifies the purpose 'to receive real-time notifications'. It also provides examples of event types ('route updates, vehicle events'), making it distinct from sibling tools like samsara_list_webhooks or samsara_delete_webhook.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lacks guidance on when to use this tool vs alternatives (e.g., when to create vs list/delete webhooks). No prerequisites, exclusions, or context about its role within the webhook lifecycle are provided. 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.

samsara_delete_routeC

Delete a route permanently

ParametersJSON Schema
NameRequiredDescriptionDefault
routeIdYesID of route to delete

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without any annotations, the description carries the full burden of behavioral disclosure. It states deletion is permanent, which is helpful, but does not disclose side effects (e.g., cascading deletion of stops, impact on active drivers), required permissions, error conditions (e.g., deleting a route that is currently being followed), or any rate limits. This is minimal for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with four words, conveying the core action and permanence. No fluff or redundant information. It lacks minimal structure like a second sentence for usage hints, but still achieves good front-loading of the critical point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one required param, no output schema), the description could be more actionable. It does not explain what happens after deletion (e.g., success message, nothing returned), error cases (e.g., invalid route ID, route not found), or how to confirm deletion. 'Permanently' is a useful warning but insufficient for safe invocation in a context-aware agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 that routeId is the ID of the route. The description does not add any extra meaning beyond the schema, such as format constraints (e.g., Samsara route ID pattern), source for obtaining the ID (e.g., from list_routes), or validation rules. Baseline of 3 is appropriate since schema covers it fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (delete) and the resource (route), and uses 'permanently' to emphasize irreversibility, distinguishing it from other tools like samsara_update_route or samsara_optimize_route. However, it does not explicitly differentiate from other delete tools like samsara_delete_webhook, which share the same verb but act on different resources; the resource name in the tool name provides that distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. No mention of prerequisites (e.g., route must not be in progress), when not to use it (e.g., if route has active stops), or references to update or optimize tools as possible alternatives. The context from sibling tools suggests many route-related tools exist, but the description offers no decision-making help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

samsara_delete_webhookC

Delete a webhook subscription

ParametersJSON Schema
NameRequiredDescriptionDefault
webhookIdYes

TDQS

C2.3/5.0
Behavior2/5

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 'Delete' implying a destructive, irreversible action, but does not clarify whether deletion requires special permissions, what happens to associated data, or that the action cannot be undone. The lack of a response format also obscures success/failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and to the point, using a single sentence. However, it is slightly too brief, lacking necessary behavioral and usage details that would improve utility without sacrificing efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema and annotations, the description should provide more context about the tool's side effects, prerequisites, and return behavior. For a simple deletion tool, it is missing important details like whether the operation is idempotent or what error cases exist.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one parameter (webhookId) with 0% description coverage. The description adds no meaning beyond the schema field name; it does not explain what the webhookId represents, its format, or how to obtain it. With only one parameter and zero coverage, the description fails to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool deletes a webhook subscription, which is a specific verb-resource pair. It distinguishes from siblings like samsara_create_webhook and samsara_list_webhooks, but does not add detail on what exactly is deleted (e.g., by ID, type).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 vs. alternatives (e.g., when to delete vs. update a webhook). There is no mention of prerequisites, such as needing the webhookId, or context about irreversible actions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

samsara_get_driverC

Get detailed information about a specific driver

ParametersJSON Schema
NameRequiredDescriptionDefault
driverIdYesDriver ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It does not disclose behavioral traits like whether the tool is read-only, whether it requires authentication, or what happens if the driverId is invalid. The description is too brief.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with key information. It uses only 6 words effectively. However, it could be more specific about what 'detailed information' includes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no output schema and no annotations, the description is too sparse. It does not specify what fields are returned (e.g., name, phone number, current vehicle), which would help an agent understand the tool's utility.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a single parameter 'driverId' described as 'Driver ID'. The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves detailed information about a specific driver. It uses the verb 'get' and resource 'driver', distinguishing it clearly from sibling tools like 'samsara_list_drivers' or 'samsara_get_driver_hos'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like 'samsara_list_drivers'. There is no mention of prerequisites or conditions, such as the need for a valid driverId.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

samsara_get_driver_hosC

Get Hours of Service (HOS) logs for a driver. Essential for compliance tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault
endTimeYesISO 8601 end time
driverIdYes
startTimeYesISO 8601 start time

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description needed to disclose behavioral traits such as read-only nature, authentication requirements, rate limits, or pagination behavior. It only says 'Get' (implying read) and mentions compliance, but does not clarify if the operation is safe, what data volume to expect, or any side effects. This is insufficient for a tool with potentially large response sizes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise at two sentences. The first sentence is the core purpose; the second adds minimal value ('Essential for compliance tracking'). No information is bloated, but the conciseness comes at the cost of omitting useful details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given three required parameters, no annotations, and no output schema, the description is incomplete. It does not specify output structure (e.g., list of logs vs. summary), time zone handling, maximum date range, or any prerequisites. The agent is left to guess important invocation details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 67% (startTime and endTime have descriptions, driverId does not). The tool description adds no parameter-level details beyond what the schema provides, and fails to explain the missing driverId parameter (e.g., format, lookup method). It does not compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and the resource ('Hours of Service logs for a driver'), and adds context about compliance tracking. It is specific enough to distinguish from siblings like samsara_get_driver or samsara_get_driver_safety_events, though it does not explicitly differentiate them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 (e.g., samsara_get_driver for basic info, samsara_get_driver_safety_events for safety events). There are no when-to-use or when-not-to-use instructions, leaving the agent to infer context 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.

samsara_get_driver_safety_eventsC

Get safety events (harsh braking, acceleration, speeding, etc.) for a driver

ParametersJSON Schema
NameRequiredDescriptionDefault
endTimeYes
driverIdYes
startTimeYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It only states 'Get safety events', which implies a read operation, but fails to disclose authentication requirements, rate limits, pagination, or what happens when no events are found. The behavioral disclosure is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 13 words, which is concise, but it lacks structure. It is front-loaded with the purpose, but every sentence earns its place only minimally. It could be slightly expanded to include key details without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 required parameters, no output schema, and no annotations, the description is incomplete. It does not explain return values, error handling, or any constraints. For a simple data retrieval tool, more context is needed for the agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the parameters have no descriptions in the schema. The tool description does not add any meaning beyond the parameter names (driverId, startTime, endTime). It does not explain the format (e.g., ISO 8601 for times), constraints, or relationships between parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', the resource 'safety events', and provides examples (harsh braking, acceleration, speeding). It also specifies the scope 'for a driver', which distinguishes it from sibling tools that deal with vehicles, routes, or webhooks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool vs alternatives. Siblings like 'samsara_get_driver' and 'samsara_get_driver_hos' exist, but the description does not differentiate them. No prerequisites, exclusions, or usage context is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

samsara_get_routeA

Get detailed information about a specific route including all stops, assigned vehicle/driver, and status

ParametersJSON Schema
NameRequiredDescriptionDefault
routeIdYesThe unique ID of the route

TDQS

A4.1/5.0
Behavior3/5

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 correctly implies a read-only operation ('Get') and lists what the response contains, but it does not disclose potential side effects, authentication requirements, or rate limits. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence of 15 words that is front-loaded with the purpose and efficiently conveys the tool's scope. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 parameter, no output schema), the description fully explains what the tool returns (stops, vehicle/driver, status). It is complete enough for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (routeId is described in the schema). The description adds no additional meaning beyond the schema's parameter name and description. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'specific route', and lists what details are included (stops, assigned vehicle/driver, status). This distinguishes it from sibling tools like samsara_list_routes (which returns a list) and update/delete/create (which modify).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you need detailed information on a single route, providing clear context. However, it does not explicitly state when NOT to use this tool or name alternative tools like samsara_list_routes when a list is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

samsara_get_vehicleB

Get detailed information about a specific vehicle by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
vehicleIdYesThe unique ID of the vehicle

TDQS

B3.1/5.0
Behavior2/5

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 only says 'detailed information' without specifying what that includes (e.g., make/model, VIN, current odometer, gateway status). It does not state if this is a read-only operation or if it might trigger side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that efficiently conveys the core purpose. Every word carries meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and no behavioral annotations. The description is too vague for a 'get detail' tool; it should at least enumerate the key categories of information returned. Without output schema, the agent has no clue what 'detailed information' means.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter exists, and schema coverage is 100%. The schema already describes vehicleId as 'The unique ID of the vehicle'. The description adds no extra semantics but the schema is sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb 'Get detailed information' and identifies the resource 'specific vehicle by ID'. It is distinct from its siblings like samsara_list_vehicles (list vs detail) and samsara_get_vehicle_locations (general info vs location-specific).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. For example, it doesn't explain that this returns static vehicle details while samsara_get_vehicle_locations returns location tracking or samsara_get_vehicle_stats returns aggregated statistics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

samsara_get_vehicle_locationsA

Get real-time or recent locations for vehicles. Uses the feed API pattern for efficient streaming of location data.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoTimestamp (ISO 8601) to get locations after this time. Leave empty for most recent.
vehicleIdsNoOptional array of specific vehicle IDs. If omitted, returns locations for all vehicles.

TDQS

A3.6/5.0
Behavior2/5

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 mentions a feed API pattern for streaming but does not explain rate limits, authentication needs, how recent the data is, or whether it returns only currently active vehicles. Significant gaps remain for an agent to understand side effects or constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The purpose is front-loaded and the streaming pattern is explained efficiently. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with two parameters, no output schema, and no annotations, the description covers the core purpose and data type. It could benefit from mentioning pagination or iteration behavior for the feed API, but is largely sufficient for a simple location-streaming tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% coverage with descriptions for both parameters. The description adds minimal value beyond the schema—'real-time or recent' and 'feed API' do not elaborate on parameter behavior (e.g., what 'after' means in a streaming context). Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets real-time or recent locations for vehicles and mentions the feed API pattern for streaming. This distinguishes it from sibling tools like samsara_get_vehicle (single vehicle details) and samsara_get_vehicle_stats (statistics), making the purpose specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for streaming location data but does not explicitly state when to use this tool versus alternatives, nor does it mention exclusions or prerequisites. The sibling tools exist but no comparative guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

samsara_get_vehicle_statsB

Get vehicle statistics including odometer, engine hours, and fuel usage over a time range

ParametersJSON Schema
NameRequiredDescriptionDefault
endTimeYesEnd time in ISO 8601 format
startTimeYesStart time in ISO 8601 format (e.g., 2024-01-01T00:00:00Z)
vehicleIdsYesArray of vehicle IDs to get stats for

TDQS

B3.3/5.0
Behavior2/5

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 only states that stats are 'get' operations, which implies read-only, but fails to mention potential rate limits, pagination behavior, whether data is aggregated or raw time-series, or what happens with invalid vehicle IDs. Given 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded with the action and resource, followed by key examples. No unnecessary words or filler. Every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has three required parameters and no output schema. The description covers the types of data returned but offers no information on response format, time range granularity, or error conditions. It is adequate for a basic understanding but incomplete for reliable invocation without additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with each parameter having a description. The description adds context by listing example stat types (odometer, engine hours, fuel usage), but does not add new meaning to individual parameters beyond what the schema already provides. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves vehicle statistics over a time range, listing specific metrics (odometer, engine hours, fuel usage). This is a specific verb+resource combination that distinguishes it from siblings like samsara_get_vehicle (single vehicle details) and samsara_get_vehicle_locations (location data).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The description does not mention prerequisites, limitations, or exclusions. While the examples (odometer, engine hours) hint at time-series data, the agent is left to infer usage context without direct comparison to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

samsara_list_addressesB

List all saved addresses

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNo
limitNo

TDQS

B3.3/5.0
Behavior3/5

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. The description indicates a read-only operation ('List'), which is transparent. However, it does not mention pagination behavior, rate limits, or what happens if there are no addresses (empty list vs error). The description is adequate for a simple list tool but misses opportunities to clarify edge cases or performance characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: a single two-word sentence that directly states the tool's purpose. It is front-loaded and contains no fluff. Every word earns its place, and there is no redundant information. For a simple list operation, this level of brevity is appropriate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (2 optional parameters, no output schema, no annotations), the description is functional but not complete. It explains what the tool does but fails to address pagination (how 'after' and 'limit' work together), the format of the returned data (since no output schema exists), or how it relates to sibling tools like samsara_create_address. For a tool with zero annotations and no output schema, the description should provide more context to ensure proper use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the description must compensate. The description does not mention the 'after' or 'limit' parameters at all, leaving their semantics entirely to the schema. Without description context, an agent must infer their meaning from names and types only. The baseline is 3 due to zero coverage, and the description fails to add value, keeping it at 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List all saved addresses' clearly identifies the action (list) and the resource (addresses). It is concise and distinguishes this tool from siblings like samsara_create_address, which creates addresses, and samsara_list_vehicles, which lists a different resource. The scope 'all saved addresses' is implied but not detailed (e.g., pagination or filtering), but it's clear enough for an agent to understand the primary function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. No usage context or prerequisites are provided. For example, it doesn't mention that this tool might be a prerequisite for other operations (like creating or updating routes that reference addresses), nor does it suggest when to use pagination (via 'after' parameter). The sibling tools include related address operations, but the description offers no differentiation or coordination advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

samsara_list_contactsD

List all contacts

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

D1.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It fails to mention any behavioral traits such as whether this is a read-only operation, if it returns all contacts without filtering, pagination behavior, rate limits, or authentication requirements. The agent cannot assess side effects or constraints from this description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short (two words), but this is under-specification, not conciseness. It does not earn its place by providing value. It wastes the opportunity to inform the agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one parameter with 0% schema description coverage, no output schema, no annotations, and many sibling tools for similar entities, the description is severely incomplete. It provides no context about return values, filtering, ordering, or relationship to other resources. The agent cannot use this description reliably.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only says 'List all contacts' and does not explain the 'limit' parameter's purpose, behavior (e.g., max results per page, server default), or any other parameters. The agent gets no added meaning beyond the schema's type/number/default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List all contacts' is vague. It does not specify what kind of contacts (e.g., driver contacts, customer contacts, API contacts) or any scope. It does not distinguish from sibling tools like samsara_create_contact or other list tools (list_routes, list_vehicles, list_drivers, etc.). The verb 'list' is appropriate but the resource is underspecified given the broader Samara API context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. There is no mention of prerequisites, context, or exclusions. For example, when to list contacts vs drivers vs addresses is unclear. The description does not help the agent decide to invoke this tool over others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

samsara_list_driversC

List all drivers in the organization with their details and external IDs

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNo
limitNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must disclose key behaviors. It only states the function but omits read-only nature, authentication requirements, rate limits, pagination behavior, or whether the list is exhaustive. The agent cannot infer important operational characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no fluff, but it is underspecified. While concise, it fails to include necessary details, reducing its effectiveness. It earns a middle score because it is not verbose, but not helpful enough.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description should explain what 'details and external IDs' means or if the list is paginated. It does not address the 'after' parameter's role or response structure. Key contextual elements for a list endpoint are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the tool description does not mention 'after' or 'limit' parameters. The agent has no semantic understanding of how to use the two optional parameters for pagination or limiting results. This is a critical gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action (list) and resource (drivers) with scope (all in organization) and output mentions (details, external IDs). It distinguishes from siblings like 'samsala_get_driver' (singular) and 'samsara_list_vehicles' (different resource). However, it does not clarify pagination implications, so it loses the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 vs alternatives (e.g., when to use 'samsala_get_driver' for a single driver), nor any preconditions or context about pagination limits. The agent receives no help in decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

samsara_list_routesA

List all routes. Routes contain ordered stops with addresses, times, and status tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoPagination cursor
limitNoMaximum routes to return (default: 50)

TDQS

A3.8/5.0
Behavior2/5

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 does not state whether this is a read-only operation, whether it returns limited fields, or any rate limits or data freshness considerations. The only behavioral hint is that routes contain 'ordered stops with addresses, times, and status tracking,' but this is more structural than behavioral.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action. The first sentence is a clear statement of purpose, the second adds context about route semantics. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only 2 well-documented parameters and no output schema, the description is reasonably complete for a simple listing endpoint. However, it could benefit from noting the default limit or that this returns a paginated list, but the schema already covers limit default, so this is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description does not add parameter-level details beyond what the schema provides (pagination cursor and limit with default). The schema already describes both parameters well, so the description does not need to compensate. A 4 acknowledges the schema does its job, while the description adds no redundancy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all routes' with a specific verb and resource, and adds detail differentiating routes from other entities: 'Routes contain ordered stops with addresses, times, and status tracking.' This provides semantic distinction in a large sibling set including vehicles, drivers, webhooks, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing route data but offers no guidance on when to use this versus alternatives like samsara_get_route (single route) or samsara_create_route (creation). No context on pagination, prerequisites, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

samsara_list_vehiclesA

List all vehicles in the fleet. Returns vehicle details including ID, name, VIN, make, model, and external IDs for TMS integration.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoPagination cursor from previous response
limitNoMaximum number of vehicles to return (default: 50, max: 512)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It discloses the return fields (ID, name, VIN, make, model, external IDs) and scope (fleet-wide), but does not mention pagination behavior, rate limits, or prerequisites. The phrase 'all vehicles' could oversimplify the paginated limit behavior implied by the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant words. Every phrase contributes: the action, scope, and key return fields. This is efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no output schema and no required parameters, the description is fairly complete. It states what it returns and the fleet scope. A minor gap is the lack of explicit pagination instructions, but the schema's 'after' parameter allows an agent to infer pagination, so it does not warrant a lower score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100% for both parameters (after, limit), so the description adds no additional meaning beyond what is already structured. The baseline 3 applies here because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'List' with a clear resource 'vehicles in the fleet', and differentiates from siblings by being plural (all vehicles) versus samsara_get_vehicle (singular). It also names the key fields returned, making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the tool's nature: when you need all vehicles, use this. However, there is no explicit mention of when not to use it or alternatives like samsara_get_vehicle for a single vehicle. No clear context or exclusions are provided beyond the name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

samsara_list_webhooksB

List all configured webhooks

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only states a read operation ('list'), but does not disclose potential limitations (e.g., pagination, rate limits, whether it returns both created and system webhooks). A simple list operation with no params is straightforward, but the description adds no safety or behavioral context beyond the implicit read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short sentence, which is concise for a simple tool. It front-loads the purpose. However, it could be slightly improved by adding 'for the organization' or 'all' is already included.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and no output schema, the description is minimally adequate. It tells the agent what the tool does but does not explain the return format (e.g., list of IDs, URLs) or any relationships to other tools (e.g., using webhook IDs for deletion). For a simple list tool, this is acceptable but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (no parameters), so the baseline is 3. The description adds value by confirming the operation lists 'all configured webhooks', which implies no filtering. This clarity is helpful since there are no parameters to explain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List all configured webhooks' clearly states the verb (list) and resource (webhooks). It is distinct from siblings like samsara_create_webhook and samsara_delete_webhook, which do different operations. It could be improved by specifying the scope (e.g., 'for the current organization') but is clear enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives like samsara_list_webhooks (no sibling with similar purpose, but no mention of prerequisites or context). For example, it does not indicate if this lists webhooks from all sources or just user-created ones, or if authentication is required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

samsara_optimize_routeB

Optimize route stop order to minimize distance/time. This is a value-add feature that reorders stops for efficiency while preserving all stop data and IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
routeIdYesRoute ID to optimize
optimizationGoalNoWhat to optimize fordistance

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It discloses that the tool reorders stops for efficiency while preserving data and IDs, hinting at non-destructive behavior. However, it does not state if the tool is read-only or modifies the route in the database, leaving some ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both purposeful and front-loaded with key information. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low parameter count and no output schema, the description adequately covers input semantics. However, it lacks details on return value or potential side effects (e.g., does it update the route in the system or just suggest ordering?). For a value-add feature, more context on outcome would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds value by clarifying the optimization preserves stop data/IDs, which is relevant to understanding the impact of parameters like optimizationGoal. For 'routeId', the description implies it must be an existing route. For 'optimizationGoal', the description's 'minimize distance/time' aligns with the enum options. This adds moderate context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool optimizes route stop order to minimize distance/time. The verb 'optimize' is specific enough, and 'route stop order' clarifies the resource. However, it does not distinguish itself from other route-related tools like samsara_get_route or samsara_update_route, which could also relate to route data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions it preserves all stop data and IDs, hinting it is safe to use. However, it provides no explicit guidance on when to use this tool vs alternatives (e.g., manual reordering via samsara_update_route). No context on prerequisites like route must exist or be active.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

samsara_update_routeA

Update a route. CRITICAL BEST PRACTICE: This tool automatically preserves stop IDs to maintain arrival/departure time tracking. You can update name, vehicle, driver, status, or modify stops. When updating stops, the tool fetches existing stop IDs and preserves them.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew route name
stopsNoUpdated stops array. Stop IDs will be automatically preserved if not provided.
statusNoUpdate route status
routeIdYesID of route to update
driverIdNoNew driver assignment
vehicleIdNoNew vehicle assignment

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses a key behavioral trait: the tool automatically preserves stop IDs by fetching existing ones. This goes beyond a simple 'update' statement and adds critical context. However, it does not mention idempotency, error states, or authorization requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences that convey the purpose, a critical best practice, and the scope of updates. No redundant or filler content. The critical best practice is front-loaded for immediate attention.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, no output schema, no annotations), the description adequately covers the most important behavior (stop ID preservation) and the scope of updates. It lacks details about return values, error conditions, or prerequisites, but the schema fills in parameter details. The description is sufficient for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the automatic preservation of stop IDs, which is not evident from the schema alone. It also provides a high-level summary of what can be updated, reinforcing the schema's descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update a route') and lists the updatable fields (name, vehicle, driver, status, stops). It distinguishes this from sibling tools like create, delete, and get, though not explicitly. The verb-resource pairing is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a 'CRITICAL BEST PRACTICE' about preserving stop IDs, providing guidance on how to use the tool correctly. However, it does not specify when to use this tool versus alternatives (e.g., when to use samsara_create_route instead). No explicit when-to-use or when-not-to-use criteria are given.

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. Dates show when Glama detected each change.

  1. 21 tool updatesv1.0.0-beta.1
    • First observedsamsara_create_address
    • First observedsamsara_create_contact
    • First observedsamsara_create_route
    • First observedsamsara_create_webhook
    • First observedsamsara_delete_route
    • First observedsamsara_delete_webhook
    • First observedsamsara_get_driver
    • First observedsamsara_get_driver_hos
    • First observedsamsara_get_driver_safety_events
    • First observedsamsara_get_route
    • First observedsamsara_get_vehicle
    • First observedsamsara_get_vehicle_locations
    • First observedsamsara_get_vehicle_stats
    • First observedsamsara_list_addresses
    • First observedsamsara_list_contacts
    • First observedsamsara_list_drivers
    • First observedsamsara_list_routes
    • First observedsamsara_list_vehicles
    • First observedsamsara_list_webhooks
    • First observedsamsara_optimize_route
    • First observedsamsara_update_route

TDQS

B3.1/5.0
Disambiguation4/5

Most tools have distinct purposes (vehicles, routes, drivers, addresses, webhooks, contacts). However, samsara_list_vehicles and samsara_get_vehicle could be confused by an agent as simply different granularities of the same resource, which is acceptable. No major overlapping ambiguity.

Naming Consistency5/5

All tools follow a consistent samsara_{verb}_{noun} pattern with clear CRUD verbs (list, get, create, update, delete) and one value-add verb (optimize). The naming is predictable and uniform, making it easy for an agent to infer tool purpose.

Tool Count4/5

21 tools covers a fleet management domain (vehicles, routes, drivers, HOS, safety, addresses, webhooks, contacts) reasonably well. It is on the higher side but each tool serves a clear function. Slightly over 15 but not excessive for the scope.

Completeness4/5

The toolset provides good CRUD coverage for routes, addresses, webhooks, and contacts, plus read-only access for vehicles and drivers with HOS and safety. Missing update/delete for drivers and vehicles, and no update for addresses/contacts, but the core fleet workflows (routing, driver monitoring) are well-covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

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/AutomationSquadOS/mcp-samsara'

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