Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Endpoints document management API toolkit. Scan documents with AI extraction and organize structured data into categorized endpoints. Use when the user asks to: scan a document, upload a file, list endpoints, inspect endpoint data, check usage stats, create or delete endpoints, get file URLs, or manage document metadata. Requires ENDPOINTS_API_KEY from endpoints.work dashboard.
Endpoints document management API toolkit. Scan documents with AI extraction and organize structured data into categorized endpoints. Use when the user asks to: scan a document, upload a file, list endpoints, inspect endpoint data, check usage stats, create or delete endpoints, get file URLs, or manage document metadata. Requires ENDPOINTS_API_KEY from endpoints.work dashboard.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Install dependencies: cd scripts && npm install Configure credentials by creating a .env file in the project root: ENDPOINTS_API_URL=https://endpoints.work ENDPOINTS_API_KEY=ep_your_api_key_here Prerequisites: An Endpoints account with an API key. Generate your API key from the API Keys page.
User saysFunction to call"List my endpoints"listEndpoints()"Show endpoint details for /job-tracker/january"getEndpoint('/job-tracker/january')"Scan this document"scanFile('/path/to/file.pdf', 'job tracker')"Scan this text"scanText('Meeting notes...', 'meeting tracker')"Create an endpoint for receipts"createEndpoint('/receipts/2026')"Delete the old endpoint"deleteEndpoint('/category/slug')"Remove that item"deleteItem('abc12345')"Get the file URL"getFileUrl('userid/path/file.pdf')"Check my usage"getStats() Execute functions by importing from scripts/src/index.ts: import { listEndpoints, scanText, getStats } from './scripts/src/index.js'; const categories = await listEndpoints(); const result = await scanText('Meeting with John about Q1 goals', 'meeting tracker'); const stats = await getStats(); Or run directly with tsx: npx tsx scripts/src/index.ts
Every analysis follows three phases:
Run API functions. Each call hits the Endpoints API and returns structured data.
All results automatically save as JSON files to results/{category}/. File naming patterns: Named results: {sanitized_name}.json Auto-generated: YYYYMMDD_HHMMSS__{operation}.json
After analysis, read the saved JSON files and create a markdown summary in results/summaries/ with data tables, insights, and extracted entities.
FunctionPurposeWhat it returnslistEndpoints()Get all endpoints by categoryTree structure with categories and endpointsgetEndpoint(path)Get endpoint detailsFull metadata (old + new items)scanText(text, prompt)Scan text with AIExtracted entities and endpoint pathscanFile(filePath, prompt)Scan file with AIExtracted entities and endpoint pathgetStats()Get usage statisticsParses used, limits, storage
For granular control, import specific functions. See references/api-reference.md for the complete list with parameters, types, and examples.
FunctionPurposelistEndpoints()List all endpoints organized by categorygetEndpoint(path)Get full endpoint details with metadatacreateEndpoint(path)Create a new empty endpointdeleteEndpoint(path)Delete endpoint and all associated files
FunctionPurposescanText(text, prompt)Scan text content with AI extractionscanFile(filePath, prompt)Scan file (PDF, images, docs) with AI
FunctionPurposedeleteItem(itemId)Delete a single item by its 8-char ID
FunctionPurposegetFileUrl(key)Get presigned S3 URL for a file
FunctionPurposegetStats()Get usage stats (parses, storage, tier)
Endpoints use the Living JSON pattern for document history: { endpoint: { path, category, slug }, metadata: { oldMetadata: { ... }, // Historical items newMetadata: { ... } // Recent items } }
Each item has: 8-character ID - Unique identifier (e.g., abc12345) summary - AI-generated description entities - Extracted entities (people, companies, dates) filePath - S3 URL if file was uploaded fileType - MIME type originalText - Source text
StatusMeaning401Invalid or missing API key404Endpoint or item not found409Endpoint already exists429Usage limit exceeded
// Get all endpoints const { categories } = await listEndpoints(); console.log(`Found ${categories.length} categories`); // Inspect specific endpoint const details = await getEndpoint('/job-tracker/january'); console.log(`Total items: ${details.totalItems}`);
// Scan text content const result = await scanText( 'Email from John Smith at Acme Corp about the Q1 contract renewal', 'business contacts' ); console.log(`Created endpoint: ${result.endpoint.path}`); // Scan a PDF file const fileResult = await scanFile('./invoice.pdf', 'invoice tracker'); console.log(`Extracted ${fileResult.entriesAdded} items`);
const stats = await getStats(); console.log(`Parses: ${stats.parsesUsed}/${stats.parsesLimit}`); console.log(`Storage: ${stats.storageUsed} bytes`);
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.