{"record":{"id":"cfd9588cdff45b79","repo":"tinyhumansai/openhuman","slug":"missing-required-param-body","errorCode":null,"errorMessage":"missing required param 'body'","messagePattern":"missing required param 'body'","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/openhuman/tinyplace/agent_tools/flows_write.rs","lineNumber":543,"sourceCode":"                )\n            }\n            Err(e) => Ok(sdk_error(&format!(\"Submitting to {bounty_id}\"), e)),\n        }\n    })\n}\n\n/// Public, judge-facing web origin for tiny.place post permalinks. The SDK base\n/// URL points at the backend API (e.g. `api.tiny.place`); the human/council-\n/// facing site is `tiny.place` (same origin the wallet fund page uses). We build\n/// the deliverable URL from the returned post id so a bounty submission resolves\n/// to viewable work.\nconst TINYPLACE_WEB_ORIGIN: &str = \"https://tiny.place\";\n\nfn post_flow(args: Value) -> FlowFuture {\n    Box::pin(async move {\n        let body = req_str(&args, \"body\")?;\n        if body.trim().is_empty() {\n            return Err(anyhow::anyhow!(\"missing required param 'body'\"));\n        }\n        let content_type = opt_str(&args, \"content_type\");\n        let bounty_id = opt_str(&args, \"bounty_id\");\n        log::debug!(\n            \"[tinyplace][flow] post start body_len={} bounty={:?}\",\n            body.len(),\n            bounty_id\n        );\n        let client = client().await?;\n        // Post to the SIGNER's OWN feed: the handle is the wallet agent id, which\n        // is a valid feed handle for every wallet — registered @handle or not —\n        // and a caller can only ever post to a feed it owns. Mirrors the\n        // `feeds_create_post` controller.\n        let handle = agent_id(client)?;\n        let post_create = tinyplace::types::PostCreate {\n            body,\n            content_type,\n            post_id: None,","sourceCodeStart":525,"sourceCodeEnd":561,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/tinyplace/agent_tools/flows_write.rs#L525-L561","documentation":"Required-parameter guard in a tinyplace flow tool's execute: the `body` argument (the post/submission content, e.g. a bounty submission) is absent from the flow args. Fires inside the FlowFuture before any SDK/network call to tiny.place, so nothing was posted; supply a non-empty body string.","triggerScenarios":"Thrown at src/openhuman/tinyplace/agent_tools/flows_write.rs:543 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Include a non-empty `body` string in the tool call","Write the deliverable content into body, then retry the submission"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}