Generate a Golioth API key from the console under Project Settings; all REST API calls require an x-api-key header with this value
List devices in a project: GET https://api.golioth.io/v1/projects/<project_id>/devices with the API key header; paginate using page and perPage query parameters
Query LightDB State for a specific device path: GET https://api.golioth.io/v1/projects/<project_id>/devices/<device_id>/data/<path> — returns the current JSON value at that path
Retrieve device logs: GET https://api.golioth.io/v1/projects/<project_id>/devices/<device_id>/logs with optional query parameters for level and time range filtering
Use LightDB Stream for time-series sensor data: GET https://api.golioth.io/v1/projects/<project_id>/devices/<device_id>/stream to fetch historical data points
Poll or use Golioth Webhooks (Output Streams) to forward LightDB Stream data to an external service in near real time
Known gotchas
LightDB State and LightDB Stream are distinct stores: State holds the latest device snapshot (JSON tree), Stream holds append-only time-series records — use the correct endpoint for your use case
The REST API is rate-limited; for high-frequency polling across a large fleet, prefer Golioth's Output Streams (webhooks) to push data to your backend instead of pulling
API key permissions are project-scoped; an API key from one project cannot access devices in another project
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp