{"protocolVersion":"1.1","protocolVersions":["1.1","2.0"],"preferredVersion":"1.1","contractProvenance":{"suiteVersion":"2.35.0"},"signingKeys":[{"keyId":"openwop-app-bundle-2","alg":"ed25519","publicKey":"WVhUJ8jHoQf9g9b8VPsfMS6kiOjUSbGdjbIAiemOVq4","use":"certification-bundle"},{"keyId":"openwop-app-bundle-1","alg":"ed25519","publicKey":"LScAhSRhmis61ScTN4wgwn8Ul19u01V148PkP7ok5ec","use":"certification-bundle","retiredAt":"2026-09-21T14:26:59Z"},{"keyId":"openwop-app-self-2026-09-04","alg":"ed25519","publicKey":"SFBjFSjHaQSUbIb-FQudyk-DwOagmGyshJBwC-0zvZ4","use":"certification-bundle","retiredAt":"2026-09-19T00:00:00Z"}],"implementation":{"name":"openwop-workflow-engine","version":"0.1.0","vendor":"openwop-app"},"hostExtensions":{"featureSurfaces":["host.sample.accessibility","host.sample.advisory-board","host.sample.agent-author","host.sample.agent-knowledge","host.sample.analytics","host.sample.app-builder","host.sample.assistant","host.sample.bi","host.sample.brand","host.sample.cad","host.sample.campaign-brief","host.sample.campaign-connectors","host.sample.campaign-intel","host.sample.campaign-journeys","host.sample.campaign-orchestration","host.sample.cdp","host.sample.cms","host.sample.comments","host.sample.commerce","host.sample.commerce-connect","host.sample.commissions","host.sample.computer-use","host.sample.consent","host.sample.creative-briefs","host.sample.creative-video","host.sample.crm","host.sample.csm","host.sample.dealers","host.sample.destination-sync","host.sample.discovery","host.sample.docs","host.sample.documents","host.sample.email","host.sample.entities","host.sample.forms","host.sample.funnels","host.sample.goals","host.sample.job-search","host.sample.kb","host.sample.kicktodo-accountability","host.sample.kicktodo-commerce","host.sample.kicktodo-community","host.sample.kicktodo-core","host.sample.kicktodo-creator","host.sample.kicktodo-engagement","host.sample.kicktodo-integrations","host.sample.kicktodo-metrics","host.sample.kicktodo-organizations","host.sample.knowledge-sync","host.sample.marketplace","host.sample.media","host.sample.notebooks","host.sample.notifications","host.sample.orgs","host.sample.podcasts","host.sample.priority-matrix","host.sample.production","host.sample.profiles","host.sample.promotions","host.sample.prompts","host.sample.recommendations","host.sample.service-desk","host.sample.slides","host.sample.strategy","host.sample.territories","host.sample.tool-output-compaction","host.sample.tutorials","host.sample.users","host.sample.walkthroughs","host.sample.webinars","host.sample.whatsapp","host.sample.work-selection","host.sample.workflow-author"]},"supportedEnvelopes":["clarification.request","schema.request","schema.response","error","media.image","media.audio","media.file","ui.a2ui-surface"],"schemaVersions":{"runEvent":1,"capabilities":1,"clarification.request":1,"schema.request":1,"schema.response":1,"error":1,"media.image":1,"media.audio":1,"media.file":1,"ui.a2ui-surface":1},"limits":{"clarificationRounds":5,"schemaRounds":3,"envelopesPerTurn":32,"maxNodeExecutions":1000,"maxRunDurationMs":600000,"maxRequestBodyBytes":1048576},"workspace":{"supported":true,"maxFileBytes":65536},"kanban":{"supported":true,"features":["boards","columns","cards","card-move-trigger"]},"uiPlugins":{"supported":true,"isolation":"cross-origin-iframe","surfaces":["artifact-viewer","route","settings-panel","canvas-preview"],"hostApi":["artifact.read","artifact.write","host.toast","host.navigate","host.announce"],"maxEntryBytes":2097152},"dispatch":{"supported":true,"fanOutSupported":true,"fanOutPolicies":["sequential","reject","parallel"],"joinModes":["wait-all"],"onChildFailureModes":["collect","absorb"],"maxFanOut":16,"perItemInput":true},"triggerBridge":{"supported":true,"subscriptionStates":["active","paused","failed","dead-lettered"],"dedup":true,"retryPolicy":{"maxAttempts":3,"backoff":"fixed"},"sources":["queue","webhook","email","form","stream","change"],"ingestion":{"externalSources":["webhook","email","form","stream","change"],"maxBodyBytes":1048576,"verification":["webhook-signature","email-dmarc","form-origin"],"registrationEndpoint":true}},"purposePropagation":{"supported":true,"propagatesOnward":true},"supportedTransports":["rest","sse"],"stream":{"modes":["values","updates","messages","debug"]},"fixtures":["conformance-agent-channel-dispatch","conformance-agent-identity","conformance-agent-pack-export","conformance-agent-pack-handoff-schema-validation","conformance-agent-pack-install","conformance-agent-pack-provenance","conformance-approval","conformance-approval-edit-accept","conformance-approval-refine","conformance-cancellable","conformance-cap-breach","conformance-channel-ttl","conformance-clarification","conformance-configurable-schema","conformance-context-budget-multiturn","conformance-conversation-capability-negotiation","conformance-conversation-lifecycle","conformance-conversation-replay","conformance-conversation-vs-clarification","conformance-delay","conformance-dispatch-cancellable-child","conformance-dispatch-cross-worker-handoff","conformance-dispatch-cross-worker-handoff-child-a","conformance-dispatch-cross-worker-handoff-child-b","conformance-dispatch-deterministic-fail-child","conformance-dispatch-input-mapping","conformance-dispatch-input-mapping-child","conformance-dispatch-input-mapping-no-default","conformance-dispatch-loop","conformance-dispatch-output-mapping","conformance-dispatch-output-mapping-child","conformance-dispatch-per-worker-override","conformance-envelope-nl-to-format-engaged","conformance-envelope-recovery-applied","conformance-envelope-refusal","conformance-envelope-retry-attempted","conformance-envelope-retry-exhausted","conformance-envelope-truncated","conformance-envelope-truncation-cap-exhaustion","conformance-failure","conformance-idempotent","conformance-identity","conformance-interrupt-auth-required","conformance-interrupt-external-event","conformance-interrupt-parent-child-cancel","conformance-interrupt-parent-child-cancel-child","conformance-interrupt-quorum","conformance-message-reducer","conformance-multi-agent-confidence-escalation","conformance-multi-agent-handoff","conformance-multi-agent-handoff-child","conformance-multi-node","conformance-noop","conformance-orchestrator-dispatch","conformance-orchestrator-low-confidence","conformance-orchestrator-terminate","conformance-phase4-nondet-tool","conformance-phase4-replay-divergence","conformance-prompt-all-four-kinds","conformance-prompt-end-to-end","conformance-run-duration-breach","conformance-stream-text","conformance-subworkflow-child","conformance-subworkflow-input-mapping","conformance-subworkflow-input-mapping-child","conformance-subworkflow-input-mapping-no-default","conformance-subworkflow-mid-run-mutation","conformance-subworkflow-mid-run-mutation-child","conformance-subworkflow-parent","conformance-version-fold","conformance-wasm-pack-memory-cap-breach","conformance-wasm-pack-roundtrip","conformance-workflow-variable-format-advisory"],"demoMode":true,"capabilities":{"auth":{"profiles":["openwop-auth-oidc-user-bearer"],"oidc":{"supported":true,"issuers":["https://securetoken.google.com/openwop-dev"],"audience":"openwop-dev"}},"httpClient":{"supported":true,"ssrfGuard":true,"maxResponseBodyBytes":10485760,"requestTimeoutMs":30000,"methods":["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],"safeFetch":{"supported":true}},"authorization":{"supported":false},"dataResidency":{"supported":true,"regions":["eu","us"]},"secrets":{"supported":true,"scopes":["tenant","user","run"],"resolution":"host-managed"},"connections":{"supported":true,"packsSupported":true},"aiProviders":{"supported":["anthropic","openai","google","minimax"],"byok":["anthropic","openai","google"],"authModes":{"anthropic":["apiKey"],"openai":["apiKey"],"google":["apiKey"]},"selfHosted":[],"policies":{"modes":["disabled","optional","required","restricted"],"scopes":["workspace","project","canvas-type"],"errorCode":"provider_policy_denied"},"toolCalling":{"supported":true,"providers":["anthropic","openai","google"]},"embeddings":{"supported":true},"input":{"modalities":["text","image","document","audio"]},"imageGeneration":{"supported":false},"videoGeneration":{"supported":false},"speechSynthesis":"supported","realtimeVoice":{"transcription":"streaming","synthesis":"streaming","turnDetection":"semantic","bargeIn":"supported"},"maxInlineMediaBytes":262144},"selfHostedRunner":{"supported":true,"dispatchKinds":["model"]},"conversationPrimitive":true,"multiPartyConversation":{"supported":true,"maxParticipants":8},"conversationTurnModelProvenance":{"supported":true},"channelPresence":{"supported":false},"i18n":{"supported":true,"defaultLocale":"en","supportedLocales":["en","es","pt-BR","fr"]},"content":{"supported":true,"baseLocale":"en","supportedLocales":["es","pt-BR","fr"]},"interrupts":{"supported":true,"kinds":["approval","clarification","refinement","cancellation","external-event","conversation.start","conversation.exchange","conversation.close"],"profiles":["openwop-interrupt-cascade-cancel","openwop-interrupt-external-event","openwop-interrupt-quorum"]},"interrupt":{"approverRouting":{"supported":true,"refKinds":["group","role"],"audience":true}},"replay":{"supported":true,"modes":["replay","branch"],"fork":true,"sideEffectSuppression":"none"},"compensation":{"supported":true,"profileVersion":"1","orderingModels":["reverse-completion"],"manualIntervention":true},"restTransport":{"conditionalRunGet":true,"contentEncodings":["zstd","br","gzip"]},"feedback":{"supported":true,"targets":["run","event","node"],"signals":["rating","correction","label","flag"]},"agents":{"supported":true,"reasoning":{"verbosity":"full","tokenLimit":512,"streaming":true},"manifestRuntime":{"supported":true,"handoffValidation":true},"roster":{"supported":true,"installScope":"tenant"},"orgChart":{"supported":true,"installScope":"tenant","departmentNesting":true,"responsibilityView":true},"proposals":{"artifactKinds":["agent-pack","workflow-chain-pack","prompt-template","automation"],"duplicationDetection":false,"activation":"direct-rbac"},"goals":{"judge":"verifier","continuation":["schedule","manual"],"requiresBounds":true}},"portability":{"export":true,"import":true,"kinds":["agent","pack","prompt-template","connection-ref","schedule","roster","org-chart"],"dryRun":true},"providerUsage":{"supported":true,"costEstimates":true,"currency":"USD"},"prompts":{"supported":true,"endpointsSupported":true,"mutableLibrary":true,"agentBindings":true,"templateKinds":["system","user","few-shot","schema-hint"],"variableSources":["input","variable","secret","context"],"maxTemplateBytes":65536,"observability":"full"},"workflowChainPacks":{"supported":true,"deferredParameters":{"supported":true},"subChains":{"supported":true,"maxDepth":8}},"envelopes":{"reasoning":{"supported":true,"promptDirective":"advisory"},"tierOneSubsetCompliance":"warn","reliability":{"supported":true,"events":["envelope.retry.attempted","envelope.retry.exhausted","envelope.refusal","envelope.truncated","envelope.recovery.applied","envelope.nlToFormat.engaged"],"maxRetryAttempts":3,"completion":{"distinguishesTruncation":true,"truncationBudgetMultiplier":2}}},"modelCapabilities":{"supported":true,"advertised":["discriminator-enum","function-calling","long-context","reasoning","structured-output","vision-input"],"substitutionSupported":false},"memory":{"supported":true,"attribution":{"supported":true,"emitsWriteEvents":true},"injectionBudget":{"supported":true,"tokenCounter":"chars"}},"conformance":{"mockAgent":false},"webhooks":{"supported":true,"signed":true,"signatureAlgorithms":["v1"],"durable":false},"a2a":{"supported":true,"agentCardUrl":"https://openwop-app-backend-89896419173.us-central1.run.app/.well-known/agent-card.json","streaming":false,"pushNotifications":true,"durableTasks":true,"protocolVersions":["1.0","0.3"],"preferredVersion":"1.0","profiles":["a2a-1.0","a2a-0.3-legacy"]},"observability":{"otel":{"namespace":"openwop"}},"runtimeCapabilities":["artifacts.local","audit","observability","secrets"],"hostSurfaces":[{"name":"host.a2a","supported":true,"implementation":"workflow-engine","note":"RFC 0076 §A + RFC 0100. A2A 0.3 JSON-RPC client AND a live server endpoint at POST /v1/host/openwop-app/a2a with DURABLE Tasks — message/send persists the projected A2ATaskState, tasks/get returns live state after disconnect, tasks/resubscribe re-attaches the update stream, and tasks/pushNotificationConfig/set registers an SSRF-guarded push (ADR 0035)."},{"name":"host.aiProviders","supported":true,"implementation":"workflow-engine","note":"BYOK via /v1/host/openwop-app/byok/secrets."},{"name":"host.artifactTypes","supported":true,"implementation":"workflow-engine","note":"ADR 0055 (RFC 0071/0075). Host artifact-type registry — host-native doc.* types with JSON-Schema validation, schemas served at /schemas/artifacts/{id}.schema.json, typed artifact.created emission from feature.documents.nodes. The kind:artifact-type pack tier IS implemented (artifactTypePackLoader registers pack types at boot; RFC 0071 schemaRef + inline schema both accepted)."},{"name":"host.blobStorage","supported":true,"implementation":"in-memory","note":"In-memory tier: presign() returns a synthetic data: URL (select OPENWOP_SURFACE_BLOB=s3 for real SigV4 presigns; the enterprise/auth posture boot guard requires a real backend)."},{"name":"host.cache","supported":true,"implementation":"in-memory"},{"name":"host.canvas","supported":true,"implementation":"workflow-engine","note":"Durable versioned shared-canvas store for vendor.myndhyve.canvas. read/write/create are real (optimistic-concurrency, shallow/deep/replace merge, field projection); crossCanvasInvoke spawns a real child run (depth/cycle guard, awaitTerminal, circuit breaker)."},{"name":"host.chat","supported":true,"implementation":"workflow-engine","note":"Bridges vendor.myndhyve.chat to the demo chat store (the same /v1/host/openwop-app/chat tables the SPA reads). sendMessage/progressCard/updateCard run; the suspend-based gate nodes (phaseInputGate/approvalGate/clarificationGate) run via the ctx.suspend/ctx.interrupt primitive (re-invoke resume, interrupt.md)."},{"name":"host.connectors","supported":true,"implementation":"workflow-engine","note":"ADR 0037. connectorInvoker.invoke(providerId, {context,request}) resolves the acting user’s Connection through the broker + brokered egress (RFC 0093 SSRF + apiHosts pin + connections:use gate + RFC 0079 provenance). Per-provider reach is deploy-gated behind a configured Connection — unconfigured fails closed."},{"name":"host.db.nosql","supported":true,"implementation":"nested-map-document-store","note":"tenant → datasource/collection → doc. Exact-match filters only ($-operators refused); $set/$unset updates. Real impls use MongoDB / DynamoDB / Firestore / CosmosDB."},{"name":"host.db.search","supported":true,"implementation":"naive-bag-of-words","note":"Token-frequency relevance score. Real impls use Elasticsearch / OpenSearch / Meilisearch / Typesense."},{"name":"host.db.sql","supported":true,"implementation":"sqlite-in-memory","note":"better-sqlite3, one in-memory DB per tenant."},{"name":"host.db.vector","supported":true,"implementation":"brute-force-cosine","note":"O(n) cosine over an in-memory Map."},{"name":"host.fs","supported":true,"implementation":"sandboxed-local-fs","note":"Sandboxed under /app/data/host-fs."},{"name":"host.interrupts","supported":true,"implementation":"workflow-engine"},{"name":"host.kanban","supported":true,"implementation":"workflow-engine","note":"Bridges vendor.myndhyve.kanban to the durable core work-item store (kanbanService.ts) — boards/cards are reusable across canvases. boardReview/timelinePlan/resourceMonitor are genuinely computed; automation rejects until a durable workflow-binding implementation is configured."},{"name":"host.knowledge","supported":true,"implementation":"workflow-engine","note":"Lexical RAG retrieval (token-frequency over a seeded demo corpus) for vendor.myndhyve.knowledge-tools. Real retrieve-with-citations; lexical not semantic (sample host ships no embedding model)."},{"name":"host.kvStorage","supported":true,"implementation":"in-memory","note":"Demo only. Restarts wipe state."},{"name":"host.launchStudio","supported":true,"implementation":"workflow-engine","note":"Multi-canvas studio backbone for vendor.myndhyve.launch-studio. getStudio returns a seeded demo studio; buildProjectContext/resolveLinkedArtifacts are pure derivations; task dispatch composes ctx.kanban."},{"name":"host.mcp","supported":true,"implementation":"workflow-engine","note":"RFC 0020 (Active). Sample-host MCP server mount at /v1/host/openwop-app/mcp; advertise streamable-http transport. OFF by default — set OPENWOP_MCP_SERVER_ENABLED=true."},{"name":"host.memory","supported":true,"implementation":"in-memory","note":"RFC 0004 read-side (list/get); host writes a run-summary on completion. In-memory tier: restarts wipe state (select OPENWOP_SURFACE_MEMORY=durable to persist)."},{"name":"host.messaging","supported":true,"implementation":"in-memory"},{"name":"host.observability","supported":true,"implementation":"structured-logger","note":"Routes through the workflow-engine logger."},{"name":"host.queue","supported":true,"implementation":"in-memory"},{"name":"host.tableStorage","supported":true,"implementation":"in-memory","note":"Demo only. No indexes; query is O(n)."},{"name":"host.triggers","supported":true,"implementation":"workflow-engine","note":"Trigger entry nodes (webhook/schedule/cron/email/mailhook/rss/form) surface the run-scoped ctx.triggerData payload; runs are started by the RFC 0083 trigger bridge, scheduler, and kanban paths. webhook-respond durably records the reply via ctx.respondToWebhook."},{"name":"host.webResearch","supported":true,"implementation":"workflow-engine","note":"For vendor.myndhyve.web-research. fetchBatch is real (concurrent HTTP fetch + readable-text extraction); search is provider-gated — live when a BYOK secret web-search or OPENWOP_WEBSEARCH_API_KEY is set (Brave-shaped, OPENWOP_WEBSEARCH_BASE_URL override), else an honest demo result; research composes the two."}],"fs":{"supported":true,"sandboxRoot":"/app/data/host-fs","maxFileSizeBytes":52428800},"kvStorage":{"supported":true,"maxKeyBytes":1024,"maxValueBytes":1048576,"maxTtlSeconds":604800,"atomicIncrement":true,"compareAndSwap":true},"tableStorage":{"supported":true,"maxRowsPerTable":100000,"maxColumnsPerRow":128,"indexable":false,"fullTextSearch":false},"deadLetter":{"supported":true,"retentionDays":30},"queueBus":{"supported":true,"backends":["in-memory"],"deadLetterSupported":true,"stream":{"supported":false,"fromBeginning":false}},"sql":{"supported":true,"transactions":true,"drivers":["sqlite"]},"vectorStore":{"supported":true,"backends":["in-memory"]},"blobStorage":{"supported":true,"presignSupported":true,"maxObjectBytes":52428800},"artifactTypes":{"supported":true,"types":{"app.audit":{"validated":true,"registrationSource":"pack","validation":"closed","export":["json"]},"app.research":{"validated":true,"registrationSource":"pack","validation":"closed","export":["json"]},"brand.kit":{"validated":true,"registrationSource":"pack","validation":"open"},"campaign-brief.ad-angle":{"validated":true,"registrationSource":"pack","validation":"open"},"campaign-brief.hook":{"validated":true,"registrationSource":"pack","validation":"open"},"campaign-brief.targeting-pack":{"validated":true,"registrationSource":"pack","validation":"open"},"campaign-brief.voc-evidence":{"validated":true,"registrationSource":"pack","validation":"open"},"canvas.app-builder":{"validated":true,"registrationSource":"host","validation":"closed","export":["json"]},"canvas.cad":{"validated":true,"registrationSource":"host","validation":"closed","export":["json","stl","gltf","png"]},"canvas.cad.bom":{"validated":true,"registrationSource":"host","validation":"closed","export":["json","csv"]},"canvas.campaign":{"validated":true,"registrationSource":"host","validation":"closed","export":["json","pdf"]},"canvas.drawing":{"validated":true,"registrationSource":"host","validation":"closed","export":["svg","png"]},"canvas.slides":{"validated":true,"registrationSource":"host","validation":"closed","export":["slides","pdf"]},"code.execution-result":{"validated":true,"registrationSource":"host","validation":"closed","export":["raw","json"]},"doc.board-agenda":{"validated":true,"registrationSource":"host","store":true,"validation":"open","export":["pdf","slides","sheet"]},"doc.epic-brief":{"validated":true,"registrationSource":"host","store":true,"validation":"open","export":["pdf","slides","sheet"]},"doc.markdown":{"validated":true,"registrationSource":"host","store":true,"validation":"open","export":["pdf","slides","sheet"]},"doc.one-pager":{"validated":true,"registrationSource":"pack","store":true,"validation":"open","export":["pdf","slides"]},"doc.prd":{"validated":true,"registrationSource":"host","store":true,"validation":"open","export":["pdf","slides","sheet"]},"doc.rfp":{"validated":true,"registrationSource":"host","store":true,"validation":"open","export":["pdf","slides","sheet"]},"doc.sow":{"validated":true,"registrationSource":"host","store":true,"validation":"open","export":["pdf","slides","sheet"]},"interactive.chart":{"validated":true,"registrationSource":"host","validation":"closed","export":["raw","json"]},"interactive.html":{"validated":true,"registrationSource":"host","validation":"open","export":["html","raw"]},"interactive.mermaid":{"validated":true,"registrationSource":"host","validation":"open","export":["raw","svg"]},"interactive.react":{"validated":true,"registrationSource":"host","validation":"open","export":["raw"]},"kicktodo.challenge-plan":{"validated":true,"registrationSource":"host","validation":"closed","export":["json"]},"kicktodo.completion-certificate":{"validated":true,"registrationSource":"host","validation":"closed","export":["json"]},"kicktodo.plan-revision":{"validated":true,"registrationSource":"host","validation":"closed","export":["json"]},"kicktodo.progress-evidence":{"validated":true,"registrationSource":"host","validation":"closed","export":["json"]},"production.plan":{"validated":true,"registrationSource":"host","validation":"open","export":["markdown","pdf"]}}},"forms":{"contentPacks":true},"host.forms":{"contentPacks":true},"cache":{"supported":true,"maxValueBytes":1048576,"maxTtlSeconds":86400},"mcp":{"supported":true,"serverUrls":["/v1/host/openwop-app/mcp"],"protocolVersions":["2026-07-28","2025-06-18"],"preferredVersion":"2026-07-28","profiles":["mcp-2026-07-28","mcp-2025-06-18-legacy"],"features":["server-discover","mrtr","cacheable-lists"],"serverMount":{"supported":true,"transports":["streamable-http"],"samplingBridge":true,"elicitationBridge":true}},"toolCatalog":{"supported":true,"sources":["mcp"],"compactView":true}},"extensions":{"openwop-app.notes":"This is the openwop reference application sample. Not production-hardened."},"x-host-openwop-workforce":{"tier":"experimental","workforces":{"supported":true,"readOnly":true},"governance":{"policyTags":true,"refusalBoundaries":true,"approvalGates":true},"assurance":{"replay":true,"evals":true,"shadow":false},"eval":{"supported":true,"surface":"host-ext","mode":"live-shadow","suiteId":"openwop-app.evals.invoice-exception"},"autonomyTiers":["review","guided","auto"]},"auth":{"profiles":["openwop-auth-oidc-user-bearer"],"oidc":{"supported":true,"issuers":["https://securetoken.google.com/openwop-dev"],"audience":"openwop-dev"}},"httpClient":{"supported":true,"ssrfGuard":true,"maxResponseBodyBytes":10485760,"requestTimeoutMs":30000,"methods":["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],"safeFetch":{"supported":true}},"authorization":{"supported":false},"dataResidency":{"supported":true,"regions":["eu","us"]},"secrets":{"supported":true,"scopes":["tenant","user","run"],"resolution":"host-managed"},"connections":{"supported":true,"packsSupported":true},"aiProviders":{"supported":["anthropic","openai","google","minimax"],"byok":["anthropic","openai","google"],"authModes":{"anthropic":["apiKey"],"openai":["apiKey"],"google":["apiKey"]},"selfHosted":[],"policies":{"modes":["disabled","optional","required","restricted"],"scopes":["workspace","project","canvas-type"],"errorCode":"provider_policy_denied"},"toolCalling":{"supported":true,"providers":["anthropic","openai","google"]},"embeddings":{"supported":true},"input":{"modalities":["text","image","document","audio"]},"imageGeneration":{"supported":false},"videoGeneration":{"supported":false},"speechSynthesis":"supported","realtimeVoice":{"transcription":"streaming","synthesis":"streaming","turnDetection":"semantic","bargeIn":"supported"},"maxInlineMediaBytes":262144},"selfHostedRunner":{"supported":true,"dispatchKinds":["model"]},"conversationPrimitive":true,"multiPartyConversation":{"supported":true,"maxParticipants":8},"conversationTurnModelProvenance":{"supported":true},"channelPresence":{"supported":false},"i18n":{"supported":true,"defaultLocale":"en","supportedLocales":["en","es","pt-BR","fr"]},"content":{"supported":true,"baseLocale":"en","supportedLocales":["es","pt-BR","fr"]},"interrupts":{"supported":true,"kinds":["approval","clarification","refinement","cancellation","external-event","conversation.start","conversation.exchange","conversation.close"],"profiles":["openwop-interrupt-cascade-cancel","openwop-interrupt-external-event","openwop-interrupt-quorum"]},"interrupt":{"approverRouting":{"supported":true,"refKinds":["group","role"],"audience":true}},"replay":{"supported":true,"modes":["replay","branch"],"fork":true,"sideEffectSuppression":"none"},"compensation":{"supported":true,"profileVersion":"1","orderingModels":["reverse-completion"],"manualIntervention":true},"restTransport":{"conditionalRunGet":true,"contentEncodings":["zstd","br","gzip"]},"feedback":{"supported":true,"targets":["run","event","node"],"signals":["rating","correction","label","flag"]},"agents":{"supported":true,"reasoning":{"verbosity":"full","tokenLimit":512,"streaming":true},"manifestRuntime":{"supported":true,"handoffValidation":true},"roster":{"supported":true,"installScope":"tenant"},"orgChart":{"supported":true,"installScope":"tenant","departmentNesting":true,"responsibilityView":true},"proposals":{"artifactKinds":["agent-pack","workflow-chain-pack","prompt-template","automation"],"duplicationDetection":false,"activation":"direct-rbac"},"goals":{"judge":"verifier","continuation":["schedule","manual"],"requiresBounds":true}},"portability":{"export":true,"import":true,"kinds":["agent","pack","prompt-template","connection-ref","schedule","roster","org-chart"],"dryRun":true},"providerUsage":{"supported":true,"costEstimates":true,"currency":"USD"},"prompts":{"supported":true,"endpointsSupported":true,"mutableLibrary":true,"agentBindings":true,"templateKinds":["system","user","few-shot","schema-hint"],"variableSources":["input","variable","secret","context"],"maxTemplateBytes":65536,"observability":"full"},"workflowChainPacks":{"supported":true,"deferredParameters":{"supported":true},"subChains":{"supported":true,"maxDepth":8}},"envelopes":{"reasoning":{"supported":true,"promptDirective":"advisory"},"tierOneSubsetCompliance":"warn","reliability":{"supported":true,"events":["envelope.retry.attempted","envelope.retry.exhausted","envelope.refusal","envelope.truncated","envelope.recovery.applied","envelope.nlToFormat.engaged"],"maxRetryAttempts":3,"completion":{"distinguishesTruncation":true,"truncationBudgetMultiplier":2}}},"modelCapabilities":{"supported":true,"advertised":["discriminator-enum","function-calling","long-context","reasoning","structured-output","vision-input"],"substitutionSupported":false},"memory":{"supported":true,"attribution":{"supported":true,"emitsWriteEvents":true},"injectionBudget":{"supported":true,"tokenCounter":"chars"}},"conformance":{"mockAgent":false},"webhooks":{"supported":true,"signed":true,"signatureAlgorithms":["v1"],"durable":false},"a2a":{"supported":true,"agentCardUrl":"https://openwop-app-backend-89896419173.us-central1.run.app/.well-known/agent-card.json","streaming":false,"pushNotifications":true,"durableTasks":true,"protocolVersions":["1.0","0.3"],"preferredVersion":"1.0","profiles":["a2a-1.0","a2a-0.3-legacy"]},"observability":{"otel":{"namespace":"openwop"}},"runtimeCapabilities":["artifacts.local","audit","observability","secrets"],"hostSurfaces":[{"name":"host.a2a","supported":true,"implementation":"workflow-engine","note":"RFC 0076 §A + RFC 0100. A2A 0.3 JSON-RPC client AND a live server endpoint at POST /v1/host/openwop-app/a2a with DURABLE Tasks — message/send persists the projected A2ATaskState, tasks/get returns live state after disconnect, tasks/resubscribe re-attaches the update stream, and tasks/pushNotificationConfig/set registers an SSRF-guarded push (ADR 0035)."},{"name":"host.aiProviders","supported":true,"implementation":"workflow-engine","note":"BYOK via /v1/host/openwop-app/byok/secrets."},{"name":"host.artifactTypes","supported":true,"implementation":"workflow-engine","note":"ADR 0055 (RFC 0071/0075). Host artifact-type registry — host-native doc.* types with JSON-Schema validation, schemas served at /schemas/artifacts/{id}.schema.json, typed artifact.created emission from feature.documents.nodes. The kind:artifact-type pack tier IS implemented (artifactTypePackLoader registers pack types at boot; RFC 0071 schemaRef + inline schema both accepted)."},{"name":"host.blobStorage","supported":true,"implementation":"in-memory","note":"In-memory tier: presign() returns a synthetic data: URL (select OPENWOP_SURFACE_BLOB=s3 for real SigV4 presigns; the enterprise/auth posture boot guard requires a real backend)."},{"name":"host.cache","supported":true,"implementation":"in-memory"},{"name":"host.canvas","supported":true,"implementation":"workflow-engine","note":"Durable versioned shared-canvas store for vendor.myndhyve.canvas. read/write/create are real (optimistic-concurrency, shallow/deep/replace merge, field projection); crossCanvasInvoke spawns a real child run (depth/cycle guard, awaitTerminal, circuit breaker)."},{"name":"host.chat","supported":true,"implementation":"workflow-engine","note":"Bridges vendor.myndhyve.chat to the demo chat store (the same /v1/host/openwop-app/chat tables the SPA reads). sendMessage/progressCard/updateCard run; the suspend-based gate nodes (phaseInputGate/approvalGate/clarificationGate) run via the ctx.suspend/ctx.interrupt primitive (re-invoke resume, interrupt.md)."},{"name":"host.connectors","supported":true,"implementation":"workflow-engine","note":"ADR 0037. connectorInvoker.invoke(providerId, {context,request}) resolves the acting user’s Connection through the broker + brokered egress (RFC 0093 SSRF + apiHosts pin + connections:use gate + RFC 0079 provenance). Per-provider reach is deploy-gated behind a configured Connection — unconfigured fails closed."},{"name":"host.db.nosql","supported":true,"implementation":"nested-map-document-store","note":"tenant → datasource/collection → doc. Exact-match filters only ($-operators refused); $set/$unset updates. Real impls use MongoDB / DynamoDB / Firestore / CosmosDB."},{"name":"host.db.search","supported":true,"implementation":"naive-bag-of-words","note":"Token-frequency relevance score. Real impls use Elasticsearch / OpenSearch / Meilisearch / Typesense."},{"name":"host.db.sql","supported":true,"implementation":"sqlite-in-memory","note":"better-sqlite3, one in-memory DB per tenant."},{"name":"host.db.vector","supported":true,"implementation":"brute-force-cosine","note":"O(n) cosine over an in-memory Map."},{"name":"host.fs","supported":true,"implementation":"sandboxed-local-fs","note":"Sandboxed under /app/data/host-fs."},{"name":"host.interrupts","supported":true,"implementation":"workflow-engine"},{"name":"host.kanban","supported":true,"implementation":"workflow-engine","note":"Bridges vendor.myndhyve.kanban to the durable core work-item store (kanbanService.ts) — boards/cards are reusable across canvases. boardReview/timelinePlan/resourceMonitor are genuinely computed; automation rejects until a durable workflow-binding implementation is configured."},{"name":"host.knowledge","supported":true,"implementation":"workflow-engine","note":"Lexical RAG retrieval (token-frequency over a seeded demo corpus) for vendor.myndhyve.knowledge-tools. Real retrieve-with-citations; lexical not semantic (sample host ships no embedding model)."},{"name":"host.kvStorage","supported":true,"implementation":"in-memory","note":"Demo only. Restarts wipe state."},{"name":"host.launchStudio","supported":true,"implementation":"workflow-engine","note":"Multi-canvas studio backbone for vendor.myndhyve.launch-studio. getStudio returns a seeded demo studio; buildProjectContext/resolveLinkedArtifacts are pure derivations; task dispatch composes ctx.kanban."},{"name":"host.mcp","supported":true,"implementation":"workflow-engine","note":"RFC 0020 (Active). Sample-host MCP server mount at /v1/host/openwop-app/mcp; advertise streamable-http transport. OFF by default — set OPENWOP_MCP_SERVER_ENABLED=true."},{"name":"host.memory","supported":true,"implementation":"in-memory","note":"RFC 0004 read-side (list/get); host writes a run-summary on completion. In-memory tier: restarts wipe state (select OPENWOP_SURFACE_MEMORY=durable to persist)."},{"name":"host.messaging","supported":true,"implementation":"in-memory"},{"name":"host.observability","supported":true,"implementation":"structured-logger","note":"Routes through the workflow-engine logger."},{"name":"host.queue","supported":true,"implementation":"in-memory"},{"name":"host.tableStorage","supported":true,"implementation":"in-memory","note":"Demo only. No indexes; query is O(n)."},{"name":"host.triggers","supported":true,"implementation":"workflow-engine","note":"Trigger entry nodes (webhook/schedule/cron/email/mailhook/rss/form) surface the run-scoped ctx.triggerData payload; runs are started by the RFC 0083 trigger bridge, scheduler, and kanban paths. webhook-respond durably records the reply via ctx.respondToWebhook."},{"name":"host.webResearch","supported":true,"implementation":"workflow-engine","note":"For vendor.myndhyve.web-research. fetchBatch is real (concurrent HTTP fetch + readable-text extraction); search is provider-gated — live when a BYOK secret web-search or OPENWOP_WEBSEARCH_API_KEY is set (Brave-shaped, OPENWOP_WEBSEARCH_BASE_URL override), else an honest demo result; research composes the two."}],"fs":{"supported":true,"sandboxRoot":"/app/data/host-fs","maxFileSizeBytes":52428800},"kvStorage":{"supported":true,"maxKeyBytes":1024,"maxValueBytes":1048576,"maxTtlSeconds":604800,"atomicIncrement":true,"compareAndSwap":true},"tableStorage":{"supported":true,"maxRowsPerTable":100000,"maxColumnsPerRow":128,"indexable":false,"fullTextSearch":false},"deadLetter":{"supported":true,"retentionDays":30},"queueBus":{"supported":true,"backends":["in-memory"],"deadLetterSupported":true,"stream":{"supported":false,"fromBeginning":false}},"sql":{"supported":true,"transactions":true,"drivers":["sqlite"]},"vectorStore":{"supported":true,"backends":["in-memory"]},"blobStorage":{"supported":true,"presignSupported":true,"maxObjectBytes":52428800},"artifactTypes":{"supported":true,"types":{"app.audit":{"validated":true,"registrationSource":"pack","validation":"closed","export":["json"]},"app.research":{"validated":true,"registrationSource":"pack","validation":"closed","export":["json"]},"brand.kit":{"validated":true,"registrationSource":"pack","validation":"open"},"campaign-brief.ad-angle":{"validated":true,"registrationSource":"pack","validation":"open"},"campaign-brief.hook":{"validated":true,"registrationSource":"pack","validation":"open"},"campaign-brief.targeting-pack":{"validated":true,"registrationSource":"pack","validation":"open"},"campaign-brief.voc-evidence":{"validated":true,"registrationSource":"pack","validation":"open"},"canvas.app-builder":{"validated":true,"registrationSource":"host","validation":"closed","export":["json"]},"canvas.cad":{"validated":true,"registrationSource":"host","validation":"closed","export":["json","stl","gltf","png"]},"canvas.cad.bom":{"validated":true,"registrationSource":"host","validation":"closed","export":["json","csv"]},"canvas.campaign":{"validated":true,"registrationSource":"host","validation":"closed","export":["json","pdf"]},"canvas.drawing":{"validated":true,"registrationSource":"host","validation":"closed","export":["svg","png"]},"canvas.slides":{"validated":true,"registrationSource":"host","validation":"closed","export":["slides","pdf"]},"code.execution-result":{"validated":true,"registrationSource":"host","validation":"closed","export":["raw","json"]},"doc.board-agenda":{"validated":true,"registrationSource":"host","store":true,"validation":"open","export":["pdf","slides","sheet"]},"doc.epic-brief":{"validated":true,"registrationSource":"host","store":true,"validation":"open","export":["pdf","slides","sheet"]},"doc.markdown":{"validated":true,"registrationSource":"host","store":true,"validation":"open","export":["pdf","slides","sheet"]},"doc.one-pager":{"validated":true,"registrationSource":"pack","store":true,"validation":"open","export":["pdf","slides"]},"doc.prd":{"validated":true,"registrationSource":"host","store":true,"validation":"open","export":["pdf","slides","sheet"]},"doc.rfp":{"validated":true,"registrationSource":"host","store":true,"validation":"open","export":["pdf","slides","sheet"]},"doc.sow":{"validated":true,"registrationSource":"host","store":true,"validation":"open","export":["pdf","slides","sheet"]},"interactive.chart":{"validated":true,"registrationSource":"host","validation":"closed","export":["raw","json"]},"interactive.html":{"validated":true,"registrationSource":"host","validation":"open","export":["html","raw"]},"interactive.mermaid":{"validated":true,"registrationSource":"host","validation":"open","export":["raw","svg"]},"interactive.react":{"validated":true,"registrationSource":"host","validation":"open","export":["raw"]},"kicktodo.challenge-plan":{"validated":true,"registrationSource":"host","validation":"closed","export":["json"]},"kicktodo.completion-certificate":{"validated":true,"registrationSource":"host","validation":"closed","export":["json"]},"kicktodo.plan-revision":{"validated":true,"registrationSource":"host","validation":"closed","export":["json"]},"kicktodo.progress-evidence":{"validated":true,"registrationSource":"host","validation":"closed","export":["json"]},"production.plan":{"validated":true,"registrationSource":"host","validation":"open","export":["markdown","pdf"]}}},"forms":{"contentPacks":true},"host.forms":{"contentPacks":true},"cache":{"supported":true,"maxValueBytes":1048576,"maxTtlSeconds":86400},"mcp":{"supported":true,"serverUrls":["/v1/host/openwop-app/mcp"],"protocolVersions":["2026-07-28","2025-06-18"],"preferredVersion":"2026-07-28","profiles":["mcp-2026-07-28","mcp-2025-06-18-legacy"],"features":["server-discover","mrtr","cacheable-lists"],"serverMount":{"supported":true,"transports":["streamable-http"],"samplingBridge":true,"elicitationBridge":true}},"toolCatalog":{"supported":true,"sources":["mcp"],"compactView":true}}