{"query":"agents","filters":{"category":null,"tag":null,"difficulty":null,"free":null,"maxPrice":null,"maxReadMins":null},"total":32,"offset":0,"limit":20,"currency":"atomic USDC (6 decimals); 10000 = $0.01. null price = free.","payment":"Paid bodies are fetched from the result url and return HTTP 402 with x402 requirements. See /.well-known/x402.json","facets":{"categories":["AI & Agents","Business & Operations","Content & Growth","Crypto Basics","IoT & Hardware","Linux & Systems","On-chain & DeFi","Security & OpSec","Self-Hosting & Infra","Solana","Wallets & Self-Custody","Web & Domains"],"tags":["301","a-records","a11y","acceptance-criteria","accessibility","acl","address-validation","agency-ops","agent-architecture","agent-authority","agent-budgets","agent-catalog","agent-memory","agent-messaging","agent-planning","agent-reliability","agent-security","agent-tools","agent-wallets","agents","ai-agents","ai-output","airdrop-scams","airdrops","algorithm","api","api-dependencies","api-design","api-integration","api-keys","api-monetization","api-reliability","api-security","approval-gates","approval-workflow","apt","arbitrage","arduino","at-least-once-delivery","audit-trail","authentication","backend","backpressure","backtesting","backups","boot","breakeven-analysis","browser-automation","bun","business-continuity","cache-invalidation","caching","calibre","camera","checklist","chia","cicd","claim-verification","client-delivery","client-qualification","cname","code-execution","collections","compliance","compromise","computer-vision","concurrency","conflict-resolution","connection-pooling","consent-management","consistency","containers","contracts","coordination","core-web-vitals","cost-optimization","cost-to-serve","credential-management","credentials","crm","cross-chain","crypto-accounting","crypto-basics","csv","ctr","cuda","custom-domain","custom-url","customer-support","data-cleaning","data-collection","data-freshness","data-ingestion","data-integrity","data-pipeline","data-privacy","data-protection","data-provenance","data-quality","data-recovery","database","database-migrations","ddrescue","debugging","deduplication","defi","deletion","depeg-risk","dependencies","deployment","devops","dex","digital-products","disaster-recovery","discovery-calls","disk-space","display","distributed-systems","dns","docker","document-parsing","documentation","domain-conflict","domain-reclaim","domain-verification","domains","downtime","dpkg","drivers","due-diligence","duino-coin","durable-execution","e-commerce","ebook-convert","ecommerce","elasticsearch","electronics","email","email-automation","embeddings","entity-resolution","environment-setup","epub","error-budgets","esp32","esp32-cam","etl","evals","event-driven","evidence","evm","exchange-withdrawals","exit-planning","fact-checking","farming","filesystem","firewall","flash-loans","forensics","forwarding","freelancing","freertos","freeze-authority","fsck","ftdi","gateways","google-domains","google-dorking","google-sites","google-workspace","gpu","gpu-mining","hard-drive","hardening","hardware","hashrate","hdd","holder-concentration","honeypot","hosting","http","http-402","human-in-the-loop","idempotency","incident-priority","incident-response","indexing","inventory","invoicing","iot","isolation","issuer-risk","javascript","journalctl","json-ld","json-schema","jtag","key-management","keyboard-navigation","kindle","knowledge-management","latency","layout-analysis","lead-generation","least-privilege","licensing","lighthouse","linux","liquid-staking","liquidity-pool","liquidity-pools","llm","llm-ops","llm-output","llm-security","llm-tools","load-shedding","local-ai","lockout-recovery","logging","lorawan","lp-lock","lp-withdrawal","margin","market-analysis","marketplace","mcp","meme-tokens","message-queues","metadata","meteora","mev","microcontroller","micropayments","migration","mining","mining-pool","mint-authority","mobi","monitoring","multi-agent-systems","mx-records","naked-domain","nas","networking","nft","nodejs","npm","nslookup","nvidia","oauth","object-storage","observability","ocr","offline-first","ollama","on-chain-alerts","on-chain-data","on-chain-signals","onboarding","openapi","opencv","opsec","orca","osint","outreach","ov2640","overclocking","package-management","page-speed","payment-terms","payments","pcb","pdf-processing","permissions","phishing","pip","pkce","plots","pnl","poe","portfolio-tracking","position-sizing","postgresql","postmortem","power","pricing","priority-fees","privacy","product-delivery","product-feed","productized-services","profitability-analysis","prompt-injection","proof-of-space","propagation","provenance","pwa","python","qa","rag","raspberry-pi","rate-limiting","real-time-monitoring","recon","reconciliation","record-linkage","recovery","redirect","registrar","regression-testing","release-management","reliability","reliability-engineering","reproducibility","reranking","research","resource-records","restaking","restore-testing","retention-policy","retries","retrieval-evaluation","reverse-proxy","risk-analysis","risk-management","robots-txt","rollback","root-cause-analysis","rpc","rug-check","rug-pull","s3","saas","sales-process","sandboxing","scaling","scam-detection","scam-patterns","scams","scheduling","schema-changes","schema-mapping","scope-creep","scope-management","scrapy","screen-readers","search","search-operators","search-quality","secret-rotation","secrets-management","security","security-headers","selectors","self-hosting","sensors","seo","server-access","server-setup","service-contracts","service-scoping","service-workers","services","shared-state","simulation","sla","slippage","slo","small-business","smart-contracts","smartctl","software-handoff","solana","solana-defi","soldering","spam-airdrops","spend-limits","spl-token","ssh","ssl","stablecoins","staking","state-management","statement-of-work","structured-data","support-ops","suppression-lists","synthetic-records","systemd","task-decomposition","tax-records","telemetry","tesseract","test-points","testing","third-party-risk","thumbnails","tls","token-authority","token-launches","tokenomics","tool-design","tool-discovery","tool-permissions","tool-schemas","trading-bots","trading-fees","transaction-execution","transaction-history","transactions","transfers","triage","troubleshooting","ubuntu","unit-economics","url-mapping","validation","vendor-risk","venv","verification","versioning","vps","wallet-monitoring","wallet-safety","wallet-security","wallet-transfers","wallets","watch-time","wcag","web","web-crawler","web-performance","web-reliability","web-scraping","webhooks","website-launch","websocket","whale-tracking","wifi","wireless","workflow-orchestration","x402","yield-comparison","yield-farming","youtube","zero-downtime"],"difficulties":["advanced","beginner","intermediate"]},"results":[{"url":"https://saylorinnovations.com/api/kb?id=mcp-server-builder-auditor","relevance":19.5,"id":"mcp-server-builder-auditor","title":"MCP Server Builder and Auditor","category":"AI & Agents","tags":["mcp","agents","tool-design","api-security","llm-tools"],"difficulty":"advanced","readMins":8,"teaser":"An MCP server that technically works can still get the wrong tool picked, accept malformed input, or hand an agent more authority than the task needs. This is a build-or-audit pass that catches all three before agents touch it.","summary":"Checklist for building or reviewing an MCP server: distinct tool names and descriptions so agents select correctly, strict input validation, least-privilege authority per tool, bounded structured outputs, confirmation gates on consequential actions, and a concrete protocol/security test pass.","price":null,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":["https://modelcontextprotocol.io/specification/2026-07-28/server/tools","https://modelcontextprotocol.io/docs/2026-07-28/tutorials/security/security_best_practices","https://modelcontextprotocol.io/docs/2026-07-28/tutorials/security/authorization"],"updated":"2026-08-22","tokenCount":2319},{"url":"https://saylorinnovations.com/api/kb?id=openapi-to-mcp","relevance":16.5,"id":"openapi-to-mcp","title":"REST/OpenAPI-to-MCP Adapter Guide","category":"AI & Agents","tags":["mcp","openapi","api-integration","agents","tool-design"],"difficulty":"advanced","readMins":6,"teaser":"Wrapping an entire REST API as one generic MCP tool is how agents end up guessing at parameters. This is the method for turning a handful of selected operations into narrow, well-named, safely-scoped tools instead.","summary":"Method for converting selected REST/OpenAPI operations into MCP tools: choose a deliberate subset of operations, give each a clear name and strict schema, enforce server-side authorization and bounded output, and add stable error behavior with client-level tests.","price":null,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":["https://spec.openapis.org/oas/latest.html","https://modelcontextprotocol.io/specification/2026-07-28/server/tools","https://modelcontextprotocol.io/docs/2026-07-28/tutorials/security/authorization"],"updated":"2026-08-22","tokenCount":1815},{"url":"https://saylorinnovations.com/api/kb?id=x402-paid-endpoint","relevance":16.5,"id":"x402-paid-endpoint","title":"x402 Paid Endpoint Builder","category":"AI & Agents","tags":["x402","agents","payments","api-monetization","solana"],"difficulty":"advanced","readMins":10,"teaser":"Getting a 402 challenge to return isn't the hard part of charging AI agents for an API call — pricing it so you don't lose money per request, and making retries safe, is. This is the build-and-test path from a free endpoint to a mainnet-ready paid one.","summary":"Design and launch checklist for an x402-paid HTTP endpoint: define the billable unit and free preview, choose scheme/network/price from real cost data, implement the unpaid 402 challenge, verify and settle before fulfillment, make retries idempotent, and pass a full negative-test gate before mainnet.","price":null,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":["https://docs.x402.org/getting-started/quickstart-for-sellers","https://docs.x402.org/schemes/overview","https://docs.x402.org/extensions/bazaar","https://docs.x402.org/guides/mcp-server-with-x402"],"updated":"2026-08-22","tokenCount":2830},{"url":"https://saylorinnovations.com/api/kb?id=agent-evaluation-tests","relevance":15,"id":"agent-evaluation-tests","title":"Agent Evaluation-Test Generator","category":"AI & Agents","tags":["evals","testing","agents","regression-testing","llm"],"difficulty":"advanced","readMins":6,"teaser":"Shipping a prompt or model change to an agent without a real test suite means the first adversarial input or edge case is a production incident. This turns an agent spec into normal, boundary, adversarial, and permission tests with actual pass criteria.","summary":"Method for building an agent evaluation suite before changing a model, prompt, tool, or permission set: generate representative, boundary, adversarial, permission, and cost test cases, grade deterministically where possible, and convert every real production failure into a permanent regression test.","price":null,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":["https://www.nist.gov/itl/ai-risk-management-framework","https://owasp.org/www-project-top-10-for-large-language-model-applications/"],"updated":"2026-08-22","tokenCount":1724},{"url":"https://saylorinnovations.com/api/kb?id=agent-memory-integrity","relevance":15,"id":"agent-memory-integrity","title":"Agent Memory and State Integrity","category":"AI & Agents","tags":["agent-memory","state-management","data-integrity","provenance","ai-agents"],"difficulty":"advanced","readMins":9,"teaser":"An agent that silently remembers something wrong is worse than one with no memory at all — it acts confidently on a fact nobody can trace back to its source. This makes agent memory attributable, correctable, and erasable by design.","summary":"Method for designing agent memory with integrity guarantees: attribute every stored fact to its source and time, scope memory to the right context, support correction and deletion without silent drift, and verify retrieved memory against current ground truth before acting on it.","price":null,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":["https://www.nist.gov/privacy-framework","https://genai.owasp.org/llmrisk/llm01-prompt-injection/","https://www.w3.org/TR/prov-overview/"],"updated":"2026-08-23","tokenCount":2609},{"url":"https://saylorinnovations.com/api/kb?id=agent-observability","relevance":15,"id":"agent-observability","title":"Agent Observability Guide","category":"AI & Agents","tags":["observability","logging","agents","monitoring","telemetry"],"difficulty":"intermediate","readMins":6,"teaser":"Debugging why an agent looped, called the wrong tool, or burned through budget is nearly impossible without a proper trace — and logging everything by default just creates a new secrets-leak problem. This is the privacy-bounded middle ground.","summary":"Method for capturing agent telemetry (model, tool, cost, latency, state, approval, error, outcome) sufficient to reconstruct a run and diagnose loops, wrong tool calls, or cost spikes, without storing raw secrets or unnecessary user content.","price":null,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":["https://opentelemetry.io/docs/concepts/observability-primer/","https://opentelemetry.io/docs/specs/otel/trace/"],"updated":"2026-08-22","tokenCount":1807},{"url":"https://saylorinnovations.com/api/kb?id=agent-retry-idempotency","relevance":15,"id":"agent-retry-idempotency","title":"Agent Retry and Idempotency Guide","category":"AI & Agents","tags":["idempotency","retries","agents","reliability","distributed-systems"],"difficulty":"advanced","readMins":6,"teaser":"When an agent isn't sure whether a payment or message actually went through after a timeout, retrying blindly is how you get charged twice. This is the idempotency-key method that makes retries safe by design instead of by luck.","summary":"Method for making agent-triggered side effects (payments, messages, orders, webhook calls) safe to retry: use a stable idempotency key per logical request, store the first terminal result atomically, and reconcile ambiguous timeouts instead of assuming success or failure.","price":null,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":["https://datatracker.ietf.org/doc/html/draft-ietf-httpapi-idempotency-key-header","https://www.rfc-editor.org/rfc/rfc9110"],"updated":"2026-08-22","tokenCount":1799},{"url":"https://saylorinnovations.com/api/kb?id=building-an-ai-agent-that-pays-with-x402","relevance":15,"id":"building-an-ai-agent-that-pays-with-x402","title":"Building an AI Agent That Pays for Data: A Practical x402 Walkthrough","category":"AI & Agents","tags":["x402","ai-agents","micropayments","solana","http-402"],"difficulty":"intermediate","readMins":7,"teaser":"HTTP 402 has been in the spec since 1997 and unused until now. x402 turns it into a real protocol: a server quotes a price, your agent pays on-chain, and retries the exact same request with proof. Here’s what that loop actually looks like in code.","summary":"A working implementation walkthrough for an AI agent consuming an x402-gated API: reading the 402 response and its accepts array, choosing a payment method (facilitator-settled transaction vs self-submitted reference), building the payment, and handling the settlement-lag retry loop — using this site’s own live Watchdog endpoints as the worked example.","price":20000,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":[],"updated":"2026-08-22","tokenCount":934},{"url":"https://saylorinnovations.com/api/kb?id=structured-output-repair","relevance":15,"id":"structured-output-repair","title":"Structured-Output Repair Guide","category":"AI & Agents","tags":["json-schema","llm-output","validation","agents","reliability"],"difficulty":"advanced","readMins":6,"teaser":"Invalid JSON from a model can mean four different things — truncation, a schema mismatch, an unsupported union, or a genuinely malformed response — and each needs a different fix. Silently coercing it just moves the bug downstream.","summary":"Method for diagnosing and repairing invalid structured LLM output: distinguish syntax failure, truncation, schema mismatch, and semantic error, apply a bounded retry/repair strategy for each, and never silently accept or coerce a response that doesn't actually match the schema.","price":null,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":["https://json-schema.org/specification","https://www.rfc-editor.org/rfc/rfc8259"],"updated":"2026-08-22","tokenCount":1789},{"url":"https://saylorinnovations.com/api/kb?id=tool-schema-optimizer","relevance":15,"id":"tool-schema-optimizer","title":"Tool Schema Optimizer","category":"AI & Agents","tags":["mcp","tool-schemas","agents","llm","api-design"],"difficulty":"advanced","readMins":6,"teaser":"When an agent keeps picking the wrong tool or sending invalid arguments, the fix is usually the tool catalog, not the model. This rewrites names, descriptions, and schemas so the correct call is the obvious one on the first attempt.","summary":"Method for improving agent tool selection and first-call validity: rewrite ambiguous names/descriptions, tighten parameter schemas and enums, remove overlapping tools, and measure the change against real selection-accuracy and validation-error rates rather than guessing.","price":null,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":["https://json-schema.org/understanding-json-schema/","https://modelcontextprotocol.io/specification/2026-07-28/server/tools"],"updated":"2026-08-22","tokenCount":1787},{"url":"https://saylorinnovations.com/api/kb?id=multi-agent-coordination","relevance":10.5,"id":"multi-agent-coordination","title":"Multi-Agent Coordination and Conflict Control","category":"AI & Agents","tags":["multi-agent-systems","coordination","conflict-resolution","shared-state","agent-architecture"],"difficulty":"advanced","readMins":9,"teaser":"Two agents editing the same resource without an ownership rule don't cooperate — they race. This sets up explicit ownership, shared state contracts, and a single auditable completion decision so multi-agent work doesn't quietly clobber itself.","summary":"Method for coordinating multiple specialized agents: assign explicit ownership over shared resources, define message contracts and conflict policy up front, and require one auditable decision that determines when a multi-agent task is actually complete.","price":null,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":["https://a2a-protocol.org/latest/","https://opentelemetry.io/docs/concepts/signals/baggage/","https://datatracker.ietf.org/doc/draft-ietf-httpapi-idempotency-key-header/"],"updated":"2026-08-23","tokenCount":2598},{"url":"https://saylorinnovations.com/api/kb?id=agent-tool-security","relevance":9,"id":"agent-tool-security","title":"Agent Tool Security Preflight","category":"Security & OpSec","tags":["agent-security","least-privilege","tool-permissions","ai-agents","opsec"],"difficulty":"advanced","readMins":8,"teaser":"Before an agent gets access to a shell, wallet, inbox, or database, there's a specific list of things to check — not a gut feeling about whether it seems safe. This is the go/no-go preflight for handing autonomous software a tool with real consequences.","summary":"Security preflight for granting an AI agent a tool: map the real authority boundary, test abuse cases before production, issue least-privilege credentials, require confirmation and spend limits on irreversible actions, sanitize tool output, and keep a tested emergency disable path.","price":null,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":["https://cheatsheetseries.owasp.org/cheatsheets/AI_Agent_Security_Cheat_Sheet.html","https://genai.owasp.org/llmrisk/llm01-prompt-injection/","https://modelcontextprotocol.io/docs/2026-07-28/tutorials/security/security_best_practices"],"updated":"2026-08-22","tokenCount":2289},{"url":"https://saylorinnovations.com/api/kb?id=prompt-injection-defense","relevance":9,"id":"prompt-injection-defense","title":"Prompt-Injection Defense Guide","category":"Security & OpSec","tags":["prompt-injection","agent-security","llm-security","opsec","ai-agents"],"difficulty":"advanced","readMins":6,"teaser":"Any agent that reads a webpage, email, or document is reading untrusted input that can try to rewrite its instructions. This is the design pattern that keeps that text acting like data instead of a command, even when it's trying hard not to.","summary":"Design method for agent workflows exposed to untrusted text (webpages, documents, email, tool output): label retrieved content as data rather than instructions, keep authorization decisions outside the model's reach, require structured proposals plus explicit approval for consequential actions, and test against adversarial injection attempts.","price":null,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":["https://genai.owasp.org/llmrisk/llm01-prompt-injection/","https://cheatsheetseries.owasp.org/cheatsheets/LLM_Prompt_Injection_Prevention_Cheat_Sheet.html","https://cheatsheetseries.owasp.org/cheatsheets/AI_Agent_Security_Cheat_Sheet.html"],"updated":"2026-08-22","tokenCount":1835},{"url":"https://saylorinnovations.com/api/kb?id=agent-capability-registry","relevance":6,"id":"agent-capability-registry","title":"Agent Capability Registry and Discovery","category":"AI & Agents","tags":["mcp","tool-discovery","agent-catalog","versioning","api-design"],"difficulty":"advanced","readMins":9,"teaser":"An agent's tool catalog drifting quietly out of sync with what the live endpoint actually accepts is one of the most common ways automation breaks. This is how to publish a capability registry that can't lie to the clients reading it.","summary":"Method for publishing a versioned agent capability registry: inventory every callable tool with owner and version, write strict schemas with valid/invalid examples, declare authority and side effects explicitly, and run conformance tests that fail deployment on an undocumented breaking change.","price":null,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":["https://modelcontextprotocol.io/docs/2026-07-28/learn/architecture","https://spec.openapis.org/oas/latest.html","https://www.nist.gov/itl/ai-risk-management-framework"],"updated":"2026-08-23","tokenCount":2727},{"url":"https://saylorinnovations.com/api/kb?id=agent-cost-latency-budget","relevance":6,"id":"agent-cost-latency-budget","title":"Agent Cost, Latency, and Quality Budgeting","category":"AI & Agents","tags":["cost-optimization","latency","agent-budgets","observability","llm-ops"],"difficulty":"advanced","readMins":9,"teaser":"An agent with no budget will happily retry, re-call tools, and burn tokens until something else stops it. This puts real measured limits on model, tool, data, payment, and human-review cost before they become a surprise invoice.","summary":"Method for budgeting agent runs: measure actual cost and latency contribution per model call, tool call, data fetch, payment, and human-review step, set enforced budgets at each layer, and detect runs that blow through cost or latency limits before they complete.","price":null,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":["https://www.finops.org/framework/","https://opentelemetry.io/docs/concepts/signals/metrics/","https://airc.nist.gov/AI_RMF_Knowledge_Base/Playbook/Measure"],"updated":"2026-08-23","tokenCount":2630},{"url":"https://saylorinnovations.com/api/kb?id=agent-planning-decomposition","relevance":6,"id":"agent-planning-decomposition","title":"Agent Planning and Task Decomposition","category":"AI & Agents","tags":["agent-planning","task-decomposition","dependencies","agent-architecture","reliability"],"difficulty":"advanced","readMins":9,"teaser":"A broad goal handed straight to an agent turns into a plan nobody can verify step by step. This decomposes it into bounded, testable steps with explicit dependencies instead — so failure points to one step, not the whole run.","summary":"Method for decomposing an agent goal into a verifiable plan: break broad objectives into bounded, independently testable steps, declare explicit dependencies and ordering constraints, and detect plan failure at the step that actually broke rather than the run as a whole.","price":null,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":["https://www.nist.gov/itl/ai-risk-management-framework","https://www.workflowpatterns.com/","https://opentelemetry.io/docs/concepts/signals/traces/"],"updated":"2026-08-23","tokenCount":2571},{"url":"https://saylorinnovations.com/api/kb?id=agent-wallet-spend-policy","relevance":6,"id":"agent-wallet-spend-policy","title":"Agent Wallet Spend-Policy Guide","category":"AI & Agents","tags":["agent-wallets","spend-limits","solana","x402","security"],"difficulty":"advanced","readMins":6,"teaser":"An agent that can initiate its own payments needs hard limits enforced outside the agent itself — not a system prompt asking it to be careful. This sets the caps, allowlists, and approval thresholds before autonomy is switched on.","summary":"Method for bounding autonomous agent spending: dedicated low-balance wallets, allowlisted networks/assets/destinations, per-call and rolling spend caps enforced externally to the agent, simulation before signing, approval thresholds for larger amounts, and a tested emergency pause.","price":null,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":["https://docs.x402.org/core-concepts/wallet","https://docs.x402.org/getting-started/quickstart-for-buyers","https://owasp.org/www-project-top-10-for-large-language-model-applications/"],"updated":"2026-08-22","tokenCount":1828},{"url":"https://saylorinnovations.com/api/kb?id=browser-automation-reliability","relevance":6,"id":"browser-automation-reliability","title":"Reliable Browser Automation","category":"AI & Agents","tags":["browser-automation","web-scraping","reliability","agent-tools","selectors"],"difficulty":"advanced","readMins":9,"teaser":"A browser-automation script that worked yesterday breaking today because a button's CSS class changed is the most common failure in this space. This builds locators and navigation that survive normal site churn instead of shattering on it.","summary":"Method for reliable browser automation: use resilient, semantically-grounded locators instead of brittle CSS/XPath selectors, verify navigation state observably rather than assuming a click worked, and design retry/failure handling that distinguishes a slow page from a genuinely broken one.","price":null,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":["https://playwright.dev/docs/actionability","https://www.w3.org/TR/webdriver2/","https://owasp.org/www-project-automated-threats-to-web-applications/"],"updated":"2026-08-23","tokenCount":2630},{"url":"https://saylorinnovations.com/api/kb?id=building-your-own-web-crawler-indexer","relevance":6,"id":"building-your-own-web-crawler-indexer","title":"Building Your Own Web Crawler & Indexer","category":"AI & Agents","tags":["web-crawler","scrapy","indexing","elasticsearch","python"],"difficulty":"intermediate","readMins":6,"teaser":"Crawlers fetch pages and follow links; indexers make that data searchable. This guide covers building a crawler from scratch in Python (requests + BeautifulSoup, queue and scope control) or with frameworks, then indexing into Elasticsearch, Meilisearch, or SQLite FTS5.","summary":"How to build a web crawler and search index: a from-scratch Python approach (requests + BeautifulSoup, deque/set queue management, robots.txt and scope control) or frameworks (Scrapy, Crawlee, Colly), then indexing crawled fields into Elasticsearch, Meilisearch, or SQLite FTS5 for full-text search.","price":10000,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":[],"updated":"2026-07-31","tokenCount":242},{"url":"https://saylorinnovations.com/api/kb?id=cuda-driver-ollama","relevance":6,"id":"cuda-driver-ollama","title":"CUDA, Driver and Ollama Compatibility Guide","category":"AI & Agents","tags":["cuda","nvidia","ollama","gpu","local-ai"],"difficulty":"intermediate","readMins":7,"teaser":"Ollama silently falling back to CPU, or a model that won't fit in VRAM, is almost never fixed by reinstalling the toolkit. This builds the actual compatibility picture — GPU, driver, CUDA runtime, model size, and available memory — instead of guessing at version numbers.","summary":"Compatibility method for local-AI GPU inference: confirm GPU support and driver/CUDA version match, verify Ollama is using the intended execution backend rather than CPU fallback, and size model/context/concurrency against measured VRAM instead of trial-and-error reinstalls.","price":null,"license":"LicenseRef-Saylor-Agent-Use-1.0","author":"David Saylor","sources":["https://docs.ollama.com/gpu","https://docs.ollama.com/troubleshooting","https://docs.ollama.com/context-length","https://docs.nvidia.com/deploy/cuda-compatibility/"],"updated":"2026-08-22","tokenCount":2014}]}