skills/scout/SKILL.md
Interact with Scout data platform API. Use when working with Scout collections, tables, documents, agents, drive storage, syncs, or usage. Supports CRUD operations on collections/tables/documents, agent management, file uploads/downloads, data sync configuration from various sources (web, Notion, Google Drive, etc.), and usage monitoring.
npx skillsauth add scoutos/scout-skills scoutInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Interact with Scout data platform for collections, tables, documents, agents, drive storage, syncs, and usage tracking.
All Scout API endpoints require Bearer token authentication. You need a Scout API key.
Include the API key in the Authorization header for every request:
Authorization: Bearer YOUR_API_KEY
Store your API key in an environment variable:
export SCOUT_API_KEY="your-api-key-here"
Then reference it in requests:
curl -H "Authorization: Bearer $SCOUT_API_KEY" https://api.scoutos.com/v2/collections
https://api.scoutos.com
Collections are top-level containers for organizing data in Scout.
GET /v2/collections
Query Parameters:
start_at (string) - Pagination cursor (created_at timestamp)limit (integer) - Max results to returnquery (string) - Search querytags (string) - Filter by tagssort (string) - Sort orderdrive (boolean) - Include drive collectionsExample:
curl -H "Authorization: Bearer $SCOUT_API_KEY" \
"https://api.scoutos.com/v2/collections?limit=10"
Response:
{
"data": [
{
"collection_id": "col_abc123",
"collection_config": {
"collection_display_name": "My Collection",
"collection_description": "Description here",
"tags": ["tag1", "tag2"]
},
"created_at": "2024-01-15T10:30:00Z",
"last_updated_at": "2024-01-20T14:22:00Z"
}
],
"has_more": true,
"next_cursor": "cursor_string"
}
POST /v2/collections
Body:
{
"collection_display_name": "My New Collection",
"collection_description": "A description",
"collection_img_url": "https://example.com/image.png",
"tags": ["documentation", "project-x"],
"table_order": []
}
Example:
curl -X POST \
-H "Authorization: Bearer $SCOUT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"collection_display_name": "Project Documents",
"collection_description": "All project documentation",
"tags": ["docs", "project"]
}' \
"https://api.scoutos.com/v2/collections"
GET /v2/collections/{collection_id}
PUT /v2/collections/{collection_id}
DELETE /v2/collections/{collection_id}
Tables store structured data within a collection. Each table has a schema defining columns.
GET /v2/collections/{collection_id}/tables
Example:
curl -H "Authorization: Bearer $SCOUT_API_KEY" \
"https://api.scoutos.com/v2/collections/col_abc123/tables"
POST /v2/collections/{collection_id}/tables
Body:
{
"table_display_name": "Users",
"table_description": "User records",
"schema": [
{
"column_id": "name",
"column_display_name": "Name",
"column_type": "text-short",
"data_type": "string"
},
{
"column_id": "email",
"column_display_name": "Email",
"column_type": "text-short",
"data_type": "string"
},
{
"column_id": "age",
"column_display_name": "Age",
"column_type": "number",
"data_type": "number"
},
{
"column_id": "status",
"column_display_name": "Status",
"column_type": "select",
"data_type": "string",
"options": [
{"id": "active", "name": "Active", "color_hex": "#00ff00"},
{"id": "inactive", "name": "Inactive", "color_hex": "#ff0000"}
]
},
{
"column_id": "created_at",
"column_display_name": "Created At",
"column_type": "datetime",
"data_type": "datetime"
}
]
}
Column Types:
| Type | Data Type | Description |
|------|-----------|-------------|
| text-short | string | Single-line text |
| text-long | string | Multi-line text |
| number | number | Numeric values |
| checkbox | boolean | True/false |
| select | string | Single selection from options |
| multi-select | string[] | Multiple selections |
| datetime | datetime | Date and time |
| url | string | URL field |
| markdown | string | Markdown content |
| json | string | JSON data |
| relation | string | Link to another table |
| people | string[] | Organization members |
Example:
curl -X POST \
-H "Authorization: Bearer $SCOUT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"table_display_name": "Tasks",
"schema": [
{"column_id": "title", "column_type": "text-short", "data_type": "string"},
{"column_id": "completed", "column_type": "checkbox", "data_type": "boolean"},
{"column_id": "priority", "column_type": "select", "data_type": "string", "options": [
{"id": "high", "name": "High"},
{"id": "medium", "name": "Medium"},
{"id": "low", "name": "Low"}
]}
]
}' \
"https://api.scoutos.com/v2/collections/col_abc123/tables"
GET /v2/collections/{collection_id}/tables/{table_id}
PUT /v2/collections/{collection_id}/tables/{table_id}
DELETE /v2/collections/{collection_id}/tables/{table_id}
Documents are individual records within a table.
GET /v2/collections/{collection_id}/tables/{table_id}/documents
Query Parameters:
start_at - Pagination cursorlimit - Max resultsquery - Search querysort - Sort field and directionExample:
curl -H "Authorization: Bearer $SCOUT_API_KEY" \
"https://api.scoutos.com/v2/collections/col_abc123/tables/tbl_xyz789/documents?limit=20"
POST /v2/collections/{collection_id}/tables/{table_id}/documents
Query Parameters:
await_completion (boolean) - Wait for indexing (default: true)mode (string) - "merge" or "replace" (default: merge)merge_fields (boolean) - Merge only provided fields (default: false)Body: JSON object matching your table schema
Example:
curl -X POST \
-H "Authorization: Bearer $SCOUT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Complete API documentation",
"completed": false,
"priority": "high"
}' \
"https://api.scoutos.com/v2/collections/col_abc123/tables/tbl_xyz789/documents"
curl -X POST \
-H "Authorization: Bearer $SCOUT_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{"title": "Task 1", "completed": false},
{"title": "Task 2", "completed": true},
{"title": "Task 3", "completed": false}
]' \
"https://api.scoutos.com/v2/collections/col_abc123/tables/tbl_xyz789/documents"
GET /v2/collections/{collection_id}/tables/{table_id}/documents/{document_id}
PUT /v2/collections/{collection_id}/tables/{table_id}/documents/{document_id}
Example - Partial Update:
curl -X PUT \
-H "Authorization: Bearer $SCOUT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"completed": true}' \
"https://api.scoutos.com/v2/collections/col_abc123/tables/tbl_xyz789/documents/doc_123?merge_fields=true"
DELETE /v2/collections/{collection_id}/tables/{table_id}/documents/{document_id}
Scout agents are AI assistants that interact with your data.
GET /agents
Example:
curl -H "Authorization: Bearer $SCOUT_API_KEY" \
"https://api.scoutos.com/agents"
Response:
[
{
"id": "agent_abc123",
"name": "Support Assistant",
"description": "Helps with customer support questions",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-20T14:22:00Z",
"visibility": {"type": "organization", "id": "org_xyz"}
}
]
GET /agents/{agent_id}
POST /agents/{agent_id}/interact
Body:
{
"message": "What are the latest support tickets?",
"conversation_id": "conv_123"
}
POST /agents/{agent_id}/upsert
DELETE /agents/{agent_id}
Upload and download files to Scout Drive storage.
POST /drive/upload
Content-Type: multipart/form-data
Parameters:
files (required) - One or more files to uploadmetadata (optional) - JSON string with per-file metadataMetadata Options:
path - Full destination path (takes precedence)folder - Destination foldername - Destination filenameExample - Single File:
curl -X POST \
-H "Authorization: Bearer $SCOUT_API_KEY" \
-F "files=@/path/to/document.pdf" \
"https://api.scoutos.com/drive/upload"
Example - Multiple Files with Metadata:
curl -X POST \
-H "Authorization: Bearer $SCOUT_API_KEY" \
-F "[email protected]" \
-F "[email protected]" \
-F 'metadata=[{"folder": "reports"}, {"folder": "images", "name": "logo.png"}]' \
"https://api.scoutos.com/drive/upload"
Response:
{
"data": [
{
"id": "file_abc123",
"name": "document.pdf",
"url": "https://drive.scoutos.com/file_abc123",
"path": "/reports/document.pdf"
}
]
}
GET /drive/download/{file_id}
Example:
curl -H "Authorization: Bearer $SCOUT_API_KEY" \
"https://api.scoutos.com/drive/download/file_abc123" \
-o downloaded_file.pdf
Sync data from external sources into Scout tables.
| Source | Archetype ID | Description |
|--------|-------------|-------------|
| Sitemap | com.scoutos.sitemap | Crawl from sitemap.xml |
| Website | com.scoutos.website | Website crawler |
| Crawl | com.scoutos.crawl | Multi-page web crawl |
| Page Crawl | com.scoutos.page_crawl | Single page scrape |
| Notion | com.notion.notion | Notion pages |
| Google Drive | com.google.drive | Google Drive files |
| Laserfiche | com.laserfiche.repository | Laserfiche documents |
| Microsoft 365 | com.microsoft.365 | SharePoint/OneDrive |
| Guided Crawl | com.scoutos.guided_crawl | AI-guided browser automation |
POST /v2/syncs
Body Structure:
{
"sync_config": {
"source_settings": { /* source-specific config */ },
"destination": {
"destination_type": "collections.v2",
"collection_id": "col_abc123",
"table_id": "tbl_xyz789"
},
"mapping": {
"fields": [
{"source": "title", "destination": "name"},
{"source": "content", "destination": "body"}
]
},
"schedule": {
"frequency": "daily",
"enabled": true
}
}
}
curl -X POST \
-H "Authorization: Bearer $SCOUT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sync_config": {
"source_settings": {
"source_archetype_id": "com.scoutos.website",
"start_urls": ["https://docs.example.com"],
"max_depth": 3,
"max_page_count": 100,
"scraper": "playwright",
"text_extractor": "trafilatura"
},
"destination": {
"destination_type": "collections.v2",
"collection_id": "col_abc123",
"table_id": "tbl_xyz789"
},
"mapping": {
"fields": [
{"source": "title", "destination": "title"},
{"source": "content", "destination": "content"},
{"source": "url", "destination": "source_url"}
]
}
}
}' \
"https://api.scoutos.com/v2/syncs"
curl -X POST \
-H "Authorization: Bearer $SCOUT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sync_config": {
"source_settings": {
"source_archetype_id": "com.notion.notion",
"api_key": "your-notion-integration-token",
"filter_options": [
{
"field": "Page Title",
"operator": "Contains Any Of",
"value": ["blog", "docs"]
}
]
},
"destination": {
"destination_type": "collections.v2",
"collection_id": "col_abc123",
"table_id": "tbl_xyz789"
},
"mapping": {"fields": []}
}
}' \
"https://api.scoutos.com/v2/syncs"
For sites requiring login or complex navigation:
curl -X POST \
-H "Authorization: Bearer $SCOUT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sync_config": {
"source_settings": {
"source_archetype_id": "com.scoutos.guided_crawl",
"start_url": "https://portal.example.com/login",
"instructions": "Login to the portal using credentials, navigate to Documents section, and download all PDF files",
"requires_login": true,
"username": "[email protected]",
"password_secret_name": "portal_password",
"parse_pdfs": true,
"max_pdfs": 50
},
"destination": {
"destination_type": "collections.v2",
"collection_id": "col_abc123",
"table_id": "tbl_xyz789"
},
"mapping": {"fields": []}
}
}' \
"https://api.scoutos.com/v2/syncs"
GET /v2/syncs
GET /v2/syncs/{sync_id}
POST /v2/syncs/{sync_id}/run
DELETE /v2/syncs/{sync_id}
Monitor your organization's API usage and costs.
GET /v2/usage
Query Parameters:
start_date (string) - Start date for usage data (ISO format)end_date (string) - End date for usage data (ISO format)Example:
curl -H "Authorization: Bearer $SCOUT_API_KEY" \
"https://api.scoutos.com/v2/usage?start_date=2024-01-01&end_date=2024-01-31"
Response:
{
"data": {
"usage": [
{
"execution_date": "2024-01-15",
"workflow_run_type": "agent",
"block_archetype_id": "llm_block",
"total_cost": 0.0025,
"total_execution_duration_ms": 1500,
"display_name": "GPT-4 Call"
}
],
"total_cost": 0.0450
}
}
For TypeScript/JavaScript projects, use the official SDK:
npm install scoutos
# or
pnpm add scoutos
# or
yarn add scoutos
import { ScoutClient } from "scoutos";
const client = new ScoutClient({
apiKey: process.env.SCOUT_API_KEY
});
// Create a collection
const collection = await client.collections.create({
collection_display_name: "Knowledge Base",
collection_description: "Documentation and articles",
tags: ["docs", "knowledge"]
});
// Create a table
const table = await client.tables.create(collection.data.collection_id, {
table_display_name: "Articles",
schema: [
{ column_id: "title", column_type: "text-short", data_type: "string" },
{ column_id: "content", column_type: "text-long", data_type: "string" },
{ column_id: "url", column_type: "url", data_type: "string" },
{ column_id: "published", column_type: "datetime", data_type: "datetime" }
]
});
// Add documents
await client.documents.create(
collection.data.collection_id,
table.data.table_id,
{
body: {
title: "Getting Started with Scout",
content: "Scout is a data platform for building AI applications...",
url: "https://docs.scoutos.com/getting-started",
published: new Date().toISOString()
}
}
);
// Set up a sync from website
await client.syncs.create({
sync_config: {
source_settings: {
source_archetype_id: "com.scoutos.website",
start_urls: ["https://docs.scoutos.com"]
},
destination: {
destination_type: "collections.v2",
collection_id: collection.data.collection_id,
table_id: table.data.table_id
},
mapping: { fields: [] }
}
});
// Check usage
const usage = await client.usage.get({
start_date: "2024-01-01",
end_date: "2024-01-31"
});
console.log(`Total cost: $${usage.data.total_cost}`);
All endpoints return standard HTTP status codes:
| Code | Meaning | |------|---------| | 200 | Success | | 400 | Bad Request - Invalid parameters | | 401 | Unauthorized - Invalid or missing API key | | 403 | Forbidden - Insufficient permissions | | 404 | Not Found - Resource doesn't exist | | 422 | Validation Error - Request body validation failed | | 429 | Rate Limited - Too many requests | | 500 | Internal Server Error |
Error Response Format:
{
"detail": "Validation error",
"errors": [
{"field": "collection_display_name", "message": "Field required"}
]
}
Scout API has rate limits to ensure fair usage. If you hit a rate limit:
Retry-After header)has_more and next_cursor for large result sets/v2/usage to track coststools
Execute and manage Scout workflows programmatically. Use when you need to run workflows, create revisions, or manage workflow lifecycle via API. Supports execution, streaming, and CLI-based deployment.
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.