{"id":7399,"plugin_id":"plugin_asdk_app_6a5fc156fad88191a3977b60131d7391","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T22:50:30.593Z","digest":"efb4741c1f123ac61919627bd4dca92f1eb8a7428085928e0ad0dbe21e9f5545","against":null,"payload":{"name":"tamarind-mcp-pipeline","description":"Orchestrate multiple dependent Tamarind Bio tools as a resumable MCP campaign where successful stages feed later stages, such as design to fold to score. Use when stages depend on earlier artifacts or metrics. Not for one job, one independent batch, a nonexistent submitPipeline call, or CLI orchestration.","included_files":[],"skill_md_contents":"---\nname: tamarind-mcp-pipeline\ndescription: Orchestrate multiple dependent Tamarind Bio tools as a resumable MCP campaign where successful stages feed later stages, such as design to fold to score. Use when stages depend on earlier artifacts or metrics. Not for one job, one independent batch, a nonexistent submitPipeline call, or CLI orchestration.\n---\n\n# Chain Tamarind jobs through MCP\n\nThe current MCP surface has no declarative pipeline submission tool. Build an explicit resumable campaign from `validateJob`, `estimateTime`, `submitJob` or `submitBatch`, bounded `getJobs` polling, and server-side artifact paths.\n\n## Plan the data flow\n\nFor every stage record:\n\n- deterministic stage and durable job/batch names;\n- live tool and validated settings;\n- required artifact and producing stage;\n- success criterion and metric direction;\n- fan-out and `topN` boundary;\n- chosen output file and exact `s3Path`;\n- current remote status and authorization state.\n\nKeep this as a reviewable state object in the task or a local JSON file when the client has a workspace. Re-read authoritative remote state before resuming.\n\n## Execute one stage at a time\n\nFor each stage:\n\n1. Call `getJobSchema`.\n2. Build the stage settings from confirmed inputs.\n3. Call `validateJob`; require `valid: true` and no mutation warning.\n4. Call `estimateTime` and confirm any material new scope.\n5. Call `submitJob` once, or one `submitBatch` for a bounded fan-out.\n6. Poll with `getJobs` at 15-30 second intervals and a finite deadline.\n7. On explicit success, call `listJobFiles`; select the output using stage-specific evidence.\n8. Pass the exact returned `s3Path` into the next schema when supported. Otherwise retrieve with `getJobFile` and re-upload with `uploadFile`.\n\nNever guess filenames or paths. Never advance a failed, stopped, or still-running stage.\n\n## Fan-out and selection\n\nUse `submitBatch(fromJob=...)` or `submitBatch(fromFile=...)` only when one generated sequence maps directly into the downstream `sequenceField`. For target-candidate complexes or any row that combines shared context with one candidate, build explicit `settings` plus `jobNames` so every final input is reviewable. Bound the expansion with `topN`, validate shared or explicit settings, estimate total cost, and obtain authorization before the fan-out.\n\nInspect and rank successful subjobs only. Advance a diverse, evidence-backed shortlist rather than every candidate or one scalar winner.\n\n## Recovery and safety\n\n- If a submit response is ambiguous, query its durable name; do not invoke the submit tool again.\n- If a polling deadline expires, checkpoint the active status and reattach later; do not restart the stage.\n- On failure, call `getJobLogs` with a bounded line count, checkpoint the failure, and stop.\n- Confirm total campaign scope before the first paid stage and again before a material fan-out or changed payload.\n- Use `cancelJob` or `cancelBatch` only after resolving and confirming the exact active target.\n- Preserve intermediate outputs, settings, metrics, and selection rationale for reproducibility.\n\nReturn the campaign state, completed and pending stages, durable names, selected artifacts, spend information, and the exact next safe action.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}