{"id":"41e435f2-c336-4c58-8b7c-93421e09380d","slug":"crewai-lucasgeron-crewai-external-app-integration","name":"crewai_external_app_integration","description":"Educational template showing how to integrate an external app (FastAPI and SQLite+ Next.js) with a CrewAI Flow via AMP that pauses for human-in-the-loop review before importing data.","canonicalUrl":"https://www.xpersona.co/skill/crewai-lucasgeron-crewai-external-app-integration","sourceUrl":"https://github.com/lucasgeron/crewai_external_app_integration","homepage":null,"source":"GITHUB_REPOS","vendor":{"slug":"lucasgeron","label":"Lucasgeron","url":"https://github.com/lucasgeron/crewai_external_app_integration"},"protocols":["OPENCLEW"],"capabilities":["crewai","multi-agent"],"trustScore":null,"trustConfidence":"unknown","artifactCount":0,"benchmarkCount":0,"lastRelease":null,"freshnessAt":"2026-10-09T01:16:17.646Z","freshnessLabel":"Oct 9, 2026","securityReviewed":true,"openapiReady":false,"stats":[{"label":"Trust score","value":"Unknown"},{"label":"Compatibility","value":"OpenClaw"},{"label":"Freshness","value":"Oct 9, 2026"},{"label":"Vendor","value":"Lucasgeron"},{"label":"Artifacts","value":"0"},{"label":"Benchmarks","value":"0"},{"label":"Last release","value":"Unpublished"}],"factsPreview":[{"factKey":"vendor","category":"vendor","label":"Vendor","value":"Lucasgeron","href":"https://github.com/lucasgeron/crewai_external_app_integration","sourceUrl":"https://github.com/lucasgeron/crewai_external_app_integration","sourceType":"profile","confidence":"medium","observedAt":"2026-10-09T01:16:17.651Z","isPublic":true},{"factKey":"protocols","category":"compatibility","label":"Protocol compatibility","value":"OpenClaw","href":"https://www.xpersona.co/api/v1/agents/crewai-lucasgeron-crewai-external-app-integration/contract","sourceUrl":"https://www.xpersona.co/api/v1/agents/crewai-lucasgeron-crewai-external-app-integration/contract","sourceType":"contract","confidence":"medium","observedAt":"2026-10-09T01:16:17.651Z","isPublic":true},{"factKey":"docs_crawl","category":"integration","label":"Crawlable docs","value":"6 indexed pages on the official domain","href":"https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar","sourceUrl":"https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar","sourceType":"search_document","confidence":"medium","observedAt":"2026-04-15T05:03:46.393Z","isPublic":true},{"factKey":"handshake_status","category":"security","label":"Handshake status","value":"UNKNOWN","href":"https://www.xpersona.co/api/v1/agents/crewai-lucasgeron-crewai-external-app-integration/trust","sourceUrl":"https://www.xpersona.co/api/v1/agents/crewai-lucasgeron-crewai-external-app-integration/trust","sourceType":"trust","confidence":"medium","observedAt":null,"isPublic":true}],"highlights":["Trust evidence available"],"agentCard":{"name":"crewai_external_app_integration","description":"Educational template showing how to integrate an external app (FastAPI and SQLite+ Next.js) with a CrewAI Flow via AMP that pauses for human-in-the-loop review before importing data.","source":"GITHUB_REPOS","sourceId":"crewai:1402415634","repository":"https://github.com/lucasgeron/crewai_external_app_integration","documentation":"https://www.xpersona.co/skill/crewai-lucasgeron-crewai-external-app-integration/agent/crewai-lucasgeron-crewai-external-app-integration","protocols":["OPENCLEW"],"capabilities":["crewai","multi-agent"],"languages":["python"],"install":{"command":"git clone https://github.com/lucasgeron/crewai_external_app_integration.git","ecosystem":"git"},"examples":[{"kind":"example","language":"bash","snippet":"./dev.sh up"},{"kind":"example","language":"mermaid","snippet":"sequenceDiagram\n    participant B as Browser\n    participant F as Frontend<br/>Next.js :3000\n    participant A as Contacts API<br/>FastAPI :8000 + SQLite\n    participant W as crewai_flow<br/>on CrewAI AMP\n\n    B->>F: 1 · Generate contacts\n    F->>W: 1 · POST /kickoff<br/>(through /api/flow/kickoff)\n    F->>A: 1 · POST /api/v1/kickoffs<br/>(save the run id)\n    W->>A: 1 · POST /flow-webhook<br/>(flow_started)\n    Note over W: 2 · generate the contacts\n    W->>A: 3 · POST /hitl-webhook<br/>(review waiting: state + callback_url)\n    A-->>F: 3 · live stream: the run waits for a review\n    F->>A: 4 · GET /api/v1/kickoffs/stream<br/>(list the runs, then every change)\n    A-->>F: 4 · the runs, with their contacts\n    Note over B,F: 4 · the user reviews and selects contacts\n    B->>F: 5 · Import\n    F->>A: 5 · POST /api/v1/kickoffs/{id}/respond<br/>(the selected contacts)\n    A->>W: 5 · POST callback_url<br/>(the answer)\n    loop each selected contact\n        W->>A: 5 · POST /api/v1/contacts\n        A-->>F: 5 · live stream: the result of this contact\n    end\n    W->>A: 6 · POST /flow-webhook<br/>(flow_finished: the final state)\n    A-->>F: 6 · live stream: the final result"}]}}