{"id":"4f88e40f-e630-406d-b790-ee081d1c1c5b","shortId":"mytkBg","kind":"skill","title":"sapiom-agent-builder","tagline":"Build and deploy autonomous agents — scripts that run on a schedule,","description":"# Sapiom Agent Builder\n\nBuild and deploy autonomous agents powered by `@sapiom/fetch` SDK and Sapiom service gateways.\n\n## When to Use\n\n- User says \"build me an agent that...\"\n- User wants to \"automate X on a schedule\"\n- User wants a \"bot that checks/monitors/scrapes/summarizes\"\n- User wants to \"alert me when X changes\"\n- User wants to deploy code that runs autonomously\n\n> Already have a working script and just want to deploy it? Use the **sapiom-deploy** skill instead.\n\n## Process\n\n### Phase 1: Parse Intent\n\nDetermine from the user's request:\n\n1. **What should the agent do?** — Monitor a website? Summarize content? Research a topic?\n2. **How often?** — Every 5 min, hourly, daily, weekly? On-demand?\n3. **What output?** — Log to console? Send a webhook? Store results?\n\nPick a **compute pattern**:\n\n| Pattern | When to Use | Deploy |\n|---------|------------|--------|\n| **Scheduled job** | Runs periodically on a cron schedule | `POST /v1/jobs` with `schedule` param |\n| **Batch job** | Processes N items in parallel on demand | `POST /v1/jobs` (no schedule), trigger via `/executions` |\n| **Orchestrator + workers** | Periodic task that fans out per-item work | Scheduled job triggers batch job executions |\n| **Sandbox** | Long-running service, exposed ports, persistent filesystem | `POST /v1/sandboxes` |\n\nFor agents that iterate over a list of items, consider the **orchestrator + workers** pattern: a lightweight scheduled job handles scraping and diffing, then triggers a separately deployed batch job with new items as task payloads. This processes items in parallel instead of sequentially.\n\n> Full deploy API details: `references/deploy.md`\n\nMap the intent to a **service pattern**:\n\n| Pattern | Description | Services |\n|---------|------------|----------|\n| **Monitor + Alert** | Watch a page, alert on changes | Firecrawl + OpenRouter |\n| **Research + Report** | Search web, read pages, summarize | Linkup + Firecrawl + OpenRouter |\n| **Collect + Store** | Scrape data, store for retrieval | Firecrawl + Upstash Vector |\n| **Search + Answer** | Query stored data, generate answers | Upstash Vector + OpenRouter |\n| **Watch + Notify** | Check URL, send webhook on condition | Firecrawl + QStash |\n| **Collect + Persist** | Scrape data, store in SQL database | Firecrawl + Neon Postgres |\n| **Track + Report** | Maintain state across runs, report trends | Neon Postgres + OpenRouter |\n\n### Phase 2: Select Capabilities\n\nRead the reference for each service the agent needs. **Only read what you need.** For each service, ask: does the agent actually need this, or is it just nice-to-have? Extra service calls add cost, latency, and failure points — and if a service returns low-quality data, downstream LLM analysis will be wrong too.\n\n| Service | Reference File | When Needed |\n|---------|---------------|-------------|\n| LLM inference | `references/llm-inference.md` | Agent needs to reason, summarize, classify |\n| Web scraping | `references/web-scraping.md` | Agent needs page content |\n| Web search | `references/web-search.md` | Agent needs to find URLs |\n| Vector storage | `references/vector-storage.md` | Agent needs semantic search / RAG |\n| Text search | `references/text-search.md` | Agent needs keyword search |\n| Redis cache | `references/redis-cache.md` | Agent needs caching, rate limiting, ephemeral state |\n| Message queue | `references/message-queue.md` | Agent needs webhooks / delayed tasks |\n| Postgres database | `references/database.md` | Agent needs structured storage / state across runs |\n| Deployment | `references/deploy.md` | Always needed (final step) |\n| All services | `references/capabilities.md` | Quick overview / comparison |\n\n### Phase 3: Get API Key\n\nThe user needs a Sapiom API key. Two options:\n\n1. **MCP tool** (if `sapiom_create_transaction_api_key` is available):\n   ```\n   Tool: sapiom_create_transaction_api_key\n   Parameters: { name: \"{agent-name}-key\", description: \"API key for {agent-name}\" }\n   ```\n   The plain key is shown **only once** — save it immediately.\n\n2. **Manual** (if no MCP tool): Direct user to https://app.sapiom.ai/settings to create an API key.\n\nIf the user already has a key, skip this step.\n\n### Phase 4: Write the Script\n\nStart from the appropriate template:\n\n| Template | When |\n|----------|------|\n| `templates/basic-cron.js` | Simple scrape/fetch agent |\n| `templates/llm-agent.js` | Agent that calls an LLM |\n\nRead the template, then adapt it:\n\n1. Copy the SDK setup pattern (same for all agents)\n2. Add gateway calls from the reference docs\n3. Wire the steps together: gather → process → act\n4. Add error handling:\n   - Every `safeFetch` call should check `res.ok` and include the response body in the error: `throw new Error(\\`... HTTP ${res.status}: ${await res.text()}\\`)`\n   - If the agent iterates over a list of items, wrap per-item work in try/catch so one failure doesn't abort the entire batch. Log the error and continue.\n\n**Script requirements for deployment:**\n- Entry point: `index.js`\n- Must have `package.json` with `@sapiom/fetch` in dependencies\n- Must have `scripts.start: \"node index.js\"`\n- Agent reads `SAPIOM_API_KEY` from `process.env`\n- Keep it simple — one file, no build step\n- **Batch job workers** use `const { blStartJob } = require(\"@blaxel/core\")` and call `blStartJob(myFunction)` where `myFunction(args)` receives each task's payload. Add `@blaxel/core` to dependencies. Scheduled jobs and standalone scripts use a normal `main()` function.\n\n**If the agent uses Postgres**, always include an `agent_runs` table to track execution history. See the \"Run Tracking\" pattern in `references/database.md`. Every agent run should:\n1. INSERT a row into `agent_runs` with status `running` at the start\n2. UPDATE it to `completed` (with `items_processed` and `summary`) or `failed` (with `error`) at the end\n3. Link data rows back to the run via a `run_id` foreign key\n\n### Phase 5: Sample Run\n\nRun the agent locally before deploying. **Expect the first run to fail** — wrong API routes, malformed responses, and bad data are normal. The goal is to catch these issues before deploying a broken agent.\n\n1. **Install dependencies** — `npm install` in the agent directory\n2. **Run the script** — `SAPIOM_API_KEY=... node index.js`\n3. **Check for errors** — fix any crashes (wrong endpoints, auth failures, JSON parse errors)\n4. **Re-run until the script completes without errors**\n\nIf the agent processes a list of items, the sample run will naturally cover the full set — don't artificially limit it. The point is to verify the pipeline works end-to-end with real data.\n\n### Phase 6: Quality Check\n\nA successful run doesn't mean the output is correct. Write a **throwaway script** that reads the agent's persisted results and checks whether the data actually makes sense.\n\nWhat to check:\n- **Are LLM outputs grounded?** — If the agent uses search results to inform analysis, do the search results actually relate to the query? Generic or unrelated results mean the search queries need reworking or the search step should be removed.\n- **Is structured data well-formed?** — If the agent extracts JSON from LLM responses, are the fields populated with real content or hallucinated/empty values?\n- **Are external API results relevant?** — Read a few records and verify that data from external services (search, scrape, enrichment) actually matches what was requested. Bad upstream data will silently produce bad downstream analysis.\n\nIf the quality check reveals issues:\n1. **Fix the agent script** — adjust prompts, remove unreliable data sources, fix queries\n2. **Clear stale data** — drop and recreate tables if the schema changed, or delete bad rows\n3. **Re-run from Phase 5**\n\nRepeat until the output holds up to inspection. Only then proceed to deploy.\n\n### Phase 7: Deploy\n\n> **STOP — Before deploying, verify:**\n> 1. Phase 5 (Sample Run) completed — the script runs without errors locally\n> 2. Phase 6 (Quality Check) passed — the output data is correct and makes sense\n>\n> If either is incomplete, go back. Deploying a broken agent wastes time — it will fail the same way in the cloud.\n\nRead `references/deploy.md` for the full API reference. Deploy is non-blocking — it returns immediately with `status: \"building\"`. Poll `GET /v1/jobs/{name}` every 10–15 seconds until `\"deployed\"` or `\"failed\"` (typically 60–120s).\n\n**Quick summary:**\n- **Scheduled job** (most common): ZIP + `POST /v1/jobs?name={name}&schedule={cron}` → poll until deployed\n- **Batch job**: same deploy, omit `schedule`, trigger via `POST /v1/jobs/{name}/executions`\n- **Orchestrator + workers**: scheduled job triggers batch job executions\n\n**Cron schedule selection:**\n\n| Frequency | Cron Expression |\n|-----------|----------------|\n| Every 5 minutes | `*/5 * * * *` |\n| Every 15 minutes | `*/15 * * * *` |\n| Every hour | `0 * * * *` |\n| Every 2 hours | `0 */2 * * *` |\n| Every 6 hours | `0 */6 * * *` |\n| Daily at 9am UTC | `0 9 * * *` |\n| Weekly Monday 9am | `0 9 * * 1` |\n\nDefault to **every 2 hours** (`0 */2 * * *`) unless the user specifies otherwise.\n\n### Phase 8: Verify\n\nAfter deploy completes:\n\n1. Confirm job status is `deployed` in the response\n2. Report to user: job name, cron schedule, services used\n3. Remind user to set `SAPIOM_API_KEY` env var if needed\n\n## Troubleshooting\n\n### `safeFetch` is not a function\n**Cause:** Wrong import or missing `@sapiom/fetch` dependency.\n**Fix:** Ensure `package.json` has `\"@sapiom/fetch\": \"^0.3.0\"` and code uses `const { createFetch } = require(\"@sapiom/fetch\")`.\n\n### HTTP 402 Payment Required\n**Cause:** Missing or invalid `SAPIOM_API_KEY`.\n**Fix:** Check that the env var is set and the key is valid. If running locally: `SAPIOM_API_KEY=sk-... node index.js`. If deployed: pass via `envs` in the deploy body.\n\n### Scrape returns empty/wrong content\n**Cause:** Firecrawl got blocked, or the page requires JavaScript rendering.\n**Fix:** Try adding `waitFor: 3000` to the scrape options. Some sites block automated requests — test the URL manually first.\n\n### LLM returns garbage or hallucinated data\n**Cause:** Input content too long, prompt too vague, or wrong model.\n**Fix:** Truncate input (`.slice(0, 8000)`), be more specific in the system prompt, or switch to a more capable model (e.g., `anthropic/claude-opus-4.6`).\n\n### Deploy returns 502\n**Cause:** Bad `package.json` — missing `main`, `scripts.start`, or invalid JSON.\n**Fix:** Ensure `package.json` has `\"main\": \"index.js\"` and `\"scripts\": { \"start\": \"node index.js\" }`.\n\n### Agent runs but produces no output\n**Cause:** Env vars missing in deployed environment.\n**Fix:** Pass `SAPIOM_API_KEY` via the `envs` field when deploying. The job needs it at runtime to call other gateways.\n\n## Checklist\n\n- [ ] Parsed user intent (what, how often, what output, compute pattern)\n- [ ] Selected capabilities (read only needed references)\n- [ ] Got API key (MCP tool, manual, or user-provided)\n- [ ] Wrote script from template + references\n- [ ] Sample run completes without errors\n- [ ] Quality checked output data for correctness\n- [ ] Deployed via Sapiom (ZIP upload flow)\n- [ ] Verified DEPLOYED status\n- [ ] Reported results to user","tags":["sapiom","agent","builder","skills","agent-skills","ai-agents"],"capabilities":["skill","source-sapiom","skill-sapiom-agent-builder","topic-agent-skills","topic-ai-agents","topic-sapiom"],"categories":["skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sapiom/skills/sapiom-agent-builder","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sapiom/skills","source_repo":"https://github.com/sapiom/skills","install_from":"skills.sh"}},"qualityScore":"0.454","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 9 github stars · SKILL.md body (11,139 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:08:44.504Z","embedding":null,"createdAt":"2026-05-18T13:14:12.470Z","updatedAt":"2026-05-18T19:08:44.504Z","lastSeenAt":"2026-05-18T19:08:44.504Z","tsv":"'/15':1247 '/2':1255,1279 '/5':1243 '/6':1260 '/executions':175,1225 '/settings':544 '/v1/jobs':156,170,1185,1206,1223 '/v1/sandboxes':203 '0':1250,1254,1259,1265,1270,1278,1444 '0.3.0':1340 '1':92,101,493,588,763,845,1062,1118,1272,1291 '10':1188 '120s':1197 '15':1189,1245 '2':115,335,533,598,776,854,1075,1130,1252,1276,1300 '3':127,480,606,793,863,1091,1310 '3000':1408 '4':561,614,877 '402':1349 '5':119,808,1097,1120,1241 '502':1464 '6':925,1132,1257 '60':1196 '7':1112 '8':1286 '8000':1445 '9':1266,1271 '9am':1263,1269 'abort':660 'across':327,465 'act':613 'actual':359,954,977,1042 'ad':1406 'adapt':586 'add':373,599,615,723 'adjust':1067 'agent':3,9,17,23,40,105,205,345,358,403,412,419,427,435,442,452,460,513,521,575,577,597,641,688,739,745,760,768,813,844,852,889,945,966,1007,1065,1153,1485 'agent-nam':512,520 'alert':59,263,267 'alreadi':72,553 'alway':469,742 'analysi':390,972,1055 'answer':293,298 'anthropic/claude-opus-4.6':1461 'api':249,482,489,500,508,517,548,691,824,859,1025,1170,1316,1357,1376,1501,1537 'app.sapiom.ai':543 'app.sapiom.ai/settings':542 'appropri':568 'arg':717 'artifici':906 'ask':355 'auth':872 'autom':45,1416 'autonom':8,22,71 'avail':503 'await':637 'back':797,1149 'bad':829,1047,1053,1089,1466 'batch':160,190,231,663,703,1214,1231 'blaxel/core':710,724 'block':1176,1397,1415 'blstartjob':708,713 'bodi':628,1389 'bot':53 'broken':843,1152 'build':5,19,37,701,1182 'builder':4,18 'cach':440,444 'call':372,579,601,620,712,1516 'capabl':337,1458,1531 'catch':837 'caus':1328,1352,1394,1429,1465,1491 'chang':63,269,1086 'check':304,622,864,927,950,959,1059,1134,1360,1557 'checklist':1519 'checks/monitors/scrapes/summarizes':55 'classifi':408 'clear':1076 'cloud':1164 'code':68,1342 'collect':282,312 'common':1203 'comparison':478 'complet':780,884,1123,1290,1553 'comput':140,1528 'condit':309 'confirm':1292 'consid':213 'consol':132 'const':707,1344 'content':111,415,1019,1393,1431 'continu':668 'copi':589 'correct':937,1140,1561 'cost':374 'cover':900 'crash':869 'creat':498,506,546 'createfetch':1345 'cron':153,1210,1234,1238,1306 'daili':122,1261 'data':285,296,315,387,795,830,923,953,1001,1035,1049,1071,1078,1138,1428,1559 'databas':319,458 'default':1273 'delay':455 'delet':1088 'demand':126,168 'depend':682,726,847,1334 'deploy':7,21,67,81,87,146,230,248,467,672,816,841,1110,1113,1116,1150,1172,1192,1213,1217,1289,1296,1382,1388,1462,1496,1508,1562,1569 'descript':260,516 'detail':250 'determin':95 'dif':225 'direct':539 'directori':853 'doc':605 'doesn':658,931 'downstream':388,1054 'drop':1079 'e.g':1460 'either':1145 'empty/wrong':1392 'end':792,918,920 'end-to-end':917 'endpoint':871 'enrich':1041 'ensur':1336,1475 'entir':662 'entri':673 'env':1318,1363,1385,1492,1505 'environ':1497 'ephemer':447 'error':616,631,634,666,789,866,876,886,1128,1555 'everi':118,618,759,1187,1240,1244,1248,1251,1256,1275 'execut':192,750,1233 'expect':817 'expos':198 'express':1239 'extern':1024,1037 'extra':370 'extract':1008 'fail':787,822,1158,1194 'failur':377,657,873 'fan':181 'field':1015,1506 'file':397,699 'filesystem':201 'final':471 'find':422 'firecrawl':270,280,289,310,320,1395 'first':819,1422 'fix':867,1063,1073,1335,1359,1404,1440,1474,1498 'flow':1567 'foreign':805 'form':1004 'frequenc':1237 'full':247,902,1169 'function':736,1327 'garbag':1425 'gateway':31,600,1518 'gather':611 'generat':297 'generic':982 'get':481,1184 'go':1148 'goal':834 'got':1396,1536 'ground':963 'hallucin':1427 'hallucinated/empty':1021 'handl':222,617 'histori':751 'hold':1102 'hour':121,1249,1253,1258,1277 'http':635,1348 'id':804 'immedi':532,1179 'import':1330 'includ':625,743 'incomplet':1147 'index.js':675,687,862,1380,1479,1484 'infer':401 'inform':971 'input':1430,1442 'insert':764 'inspect':1105 'instal':846,849 'instead':89,244 'intent':94,254,1522 'invalid':1355,1472 'issu':839,1061 'item':164,185,212,235,241,647,651,782,894 'iter':207,642 'javascript':1402 'job':148,161,188,191,221,232,704,728,1201,1215,1229,1232,1293,1304,1510 'json':874,1009,1473 'keep':695 'key':483,490,501,509,515,518,525,549,556,692,806,860,1317,1358,1369,1377,1502,1538 'keyword':437 'latenc':375 'lightweight':219 'limit':446,907 'link':794 'linkup':279 'list':210,645,892 'llm':389,400,581,961,1011,1423 'local':814,1129,1374 'log':130,664 'long':195,1433 'long-run':194 'low':385 'low-qual':384 'main':735,1469,1478 'maintain':325 'make':955,1142 'malform':826 'manual':534,1421,1541 'map':252 'match':1043 'mcp':494,537,1539 'mean':933,986 'messag':449 'min':120 'minut':1242,1246 'miss':1332,1353,1468,1494 'model':1439,1459 'monday':1268 'monitor':107,262 'must':676,683 'myfunct':714,716 'n':163 'name':511,514,522,1186,1207,1208,1224,1305 'natur':899 'need':346,351,360,399,404,413,420,428,436,443,453,461,470,486,990,1321,1511,1534 'neon':321,331 'new':234,633 'nice':367 'nice-to-hav':366 'node':686,861,1379,1483 'non':1175 'non-block':1174 'normal':734,832 'notifi':303 'npm':848 'often':117,1525 'omit':1218 'on-demand':124 'one':656,698 'openrout':271,281,301,333 'option':492,1412 'orchestr':176,215,1226 'otherwis':1284 'output':129,935,962,1101,1137,1490,1527,1558 'overview':477 'package.json':678,1337,1467,1476 'page':266,277,414,1400 'parallel':166,243 'param':159 'paramet':510 'pars':93,875,1520 'pass':1135,1383,1499 'pattern':141,142,217,258,259,593,756,1529 'payload':238,722 'payment':1350 'per':184,650 'per-item':183,649 'period':150,178 'persist':200,313,947 'phase':91,334,479,560,807,924,1096,1111,1119,1131,1285 'pick':138 'pipelin':915 'plain':524 'point':378,674,910 'poll':1183,1211 'popul':1016 'port':199 'post':155,169,202,1205,1222 'postgr':322,332,457,741 'power':24 'proceed':1108 'process':90,162,240,612,783,890 'process.env':694 'produc':1052,1488 'prompt':1068,1434,1452 'provid':1545 'qstash':311 'qualiti':386,926,1058,1133,1556 'queri':294,981,989,1074 'queue':450 'quick':476,1198 'rag':431 'rate':445 're':879,1093 're-run':878,1092 'read':276,338,348,582,689,943,1028,1165,1532 'real':922,1018 'reason':406 'receiv':718 'record':1031 'recreat':1081 'redi':439 'refer':340,396,604,1171,1535,1550 'references/capabilities.md':475 'references/database.md':459,758 'references/deploy.md':251,468,1166 'references/llm-inference.md':402 'references/message-queue.md':451 'references/redis-cache.md':441 'references/text-search.md':434 'references/vector-storage.md':426 'references/web-scraping.md':411 'references/web-search.md':418 'relat':978 'relev':1027 'remind':1311 'remov':998,1069 'render':1403 'repeat':1098 'report':273,324,329,1301,1571 'request':100,1046,1417 'requir':670,709,1346,1351,1401 'res.ok':623 'res.status':636 'res.text':638 'research':112,272 'respons':627,827,1012,1299 'result':137,948,969,976,985,1026,1572 'retriev':288 'return':383,1178,1391,1424,1463 'reveal':1060 'rework':991 'rout':825 'row':766,796,1090 'run':12,70,149,196,328,466,746,754,761,769,772,800,803,810,811,820,855,880,897,930,1094,1122,1126,1373,1486,1552 'runtim':1514 'safefetch':619,1323 'sampl':809,896,1121,1551 'sandbox':193 'sapiom':2,16,29,86,488,497,505,690,858,1315,1356,1375,1500,1564 'sapiom-agent-build':1 'sapiom-deploy':85 'sapiom/fetch':26,680,1333,1339,1347 'save':530 'say':36 'schedul':15,49,147,154,158,172,187,220,727,1200,1209,1219,1228,1235,1307 'schema':1085 'scrape':223,284,314,410,1040,1390,1411 'scrape/fetch':574 'script':10,76,564,669,731,857,883,941,1066,1125,1481,1547 'scripts.start':685,1470 'sdk':27,591 'search':274,292,417,430,433,438,968,975,988,994,1039 'second':1190 'see':752 'select':336,1236,1530 'semant':429 'send':133,306 'sens':956,1143 'separ':229 'sequenti':246 'servic':30,197,257,261,343,354,371,382,395,474,1038,1308 'set':903,1314,1366 'setup':592 'shown':527 'silent':1051 'simpl':573,697 'site':1414 'sk':1378 'skill':88 'skill-sapiom-agent-builder' 'skip':557 'slice':1443 'sourc':1072 'source-sapiom' 'specif':1448 'specifi':1283 'sql':318 'stale':1077 'standalon':730 'start':565,775,1482 'state':326,448,464 'status':771,1181,1294,1570 'step':472,559,609,702,995 'stop':1114 'storag':425,463 'store':136,283,286,295,316 'structur':462,1000 'success':929 'summar':110,278,407 'summari':785,1199 'switch':1454 'system':1451 'tabl':747,1082 'task':179,237,456,720 'templat':569,570,584,1549 'templates/basic-cron.js':572 'templates/llm-agent.js':576 'test':1418 'text':432 'throw':632 'throwaway':940 'time':1155 'togeth':610 'tool':495,504,538,1540 'topic':114 'topic-agent-skills' 'topic-ai-agents' 'topic-sapiom' 'track':323,749,755 'transact':499,507 'trend':330 'tri':1405 'trigger':173,189,227,1220,1230 'troubleshoot':1322 'truncat':1441 'try/catch':654 'two':491 'typic':1195 'unless':1280 'unrel':984 'unreli':1070 'updat':777 'upload':1566 'upstash':290,299 'upstream':1048 'url':305,423,1420 'use':34,83,145,706,732,740,967,1309,1343 'user':35,42,50,56,64,98,485,540,552,1282,1303,1312,1521,1544,1574 'user-provid':1543 'utc':1264 'vagu':1436 'valid':1371 'valu':1022 'var':1319,1364,1493 'vector':291,300,424 'verifi':913,1033,1117,1287,1568 'via':174,801,1221,1384,1503,1563 'waitfor':1407 'want':43,51,57,65,79 'wast':1154 'watch':264,302 'way':1161 'web':275,409,416 'webhook':135,307,454 'websit':109 'week':123,1267 'well':1003 'well-form':1002 'whether':951 'wire':607 'without':885,1127,1554 'work':75,186,652,916 'worker':177,216,705,1227 'wrap':648 'write':562,938 'wrong':393,823,870,1329,1438 'wrote':1546 'x':46,62 'zip':1204,1565","prices":[{"id":"69a8144c-6d38-48d7-8aaa-254a6bc0d04c","listingId":"4f88e40f-e630-406d-b790-ee081d1c1c5b","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sapiom","category":"skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:14:12.470Z"}],"sources":[{"listingId":"4f88e40f-e630-406d-b790-ee081d1c1c5b","source":"github","sourceId":"sapiom/skills/sapiom-agent-builder","sourceUrl":"https://github.com/sapiom/skills/tree/main/skills/sapiom-agent-builder","isPrimary":false,"firstSeenAt":"2026-05-18T13:14:12.470Z","lastSeenAt":"2026-05-18T19:08:44.504Z"}],"details":{"listingId":"4f88e40f-e630-406d-b790-ee081d1c1c5b","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sapiom","slug":"sapiom-agent-builder","github":{"repo":"sapiom/skills","stars":9,"topics":["agent-skills","ai-agents","sapiom"],"license":"mit","html_url":"https://github.com/sapiom/skills","pushed_at":"2026-03-06T17:40:04Z","description":"Agent skills for Sapiom — instant access to paid services for AI agents","skill_md_sha":"6855c11f9ae93a9e8875ca8cb6b8bcb211da54fc","skill_md_path":"skills/sapiom-agent-builder/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sapiom/skills/tree/main/skills/sapiom-agent-builder"},"layout":"multi","source":"github","category":"skills","frontmatter":{"name":"sapiom-agent-builder","description":"Build and deploy autonomous agents — scripts that run on a schedule,"},"skills_sh_url":"https://skills.sh/sapiom/skills/sapiom-agent-builder"},"updatedAt":"2026-05-18T19:08:44.504Z"}}