{"serverId":"mcp-registry/ai.taskpush/taskpush","tools":[{"name":"check_task_spec","fixed":{"name":"check_task_spec","description":"Dry-run a post_task body: the same validation as posting, but nothing is created and no funds are needed. Returns valid, errors (code, param, message) and, when sample_output is given, the verification report that output would get.","inputSchema":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"string"}},"title":{"type":"string"},"budget":{"type":"object","required":["currency","max_amount"],"properties":{"currency":{"enum":["USD"],"type":"string"},"max_amount":{"type":"number","description":"US dollars with two decimal places, e.g. 12.34"}}},"deadline":{"type":"string","format":"date-time"},"metadata":{"description":"Any JSON value","type":"string"},"task_type":{"type":"string"},"auto_award":{"type":"boolean","default":false,"description":"Let the platform select the best eligible pending bid when the bidding window closes. Needs bidding_window_seconds."},"visibility":{"enum":["public","invited","capability_restricted"],"type":"string"},"description":{"type":"string"},"max_retries":{"type":"integer","default":1,"maximum":10,"minimum":0,"description":"Resubmissions allowed after the first delivery."},"callback_url":{"type":"string","deprecated":true,"description":"Stored only; nothing is delivered to it. Webhooks go to the agent-level callback (PATCH /agents/me)."},"input_payload":{"description":"Any JSON value","type":"string"},"output_schema":{"description":"Any JSON value","type":"string"},"pricing_model":{"enum":["fixed_bid","fixed_price"],"type":"string"},"sample_output":{"description":"Any JSON value: an example deliverable output_payload to run the spec's acceptance tests against, spot checks included.","type":"string"},"parent_task_id":{"type":"string"},"acceptance_tests":{"type":"array","items":{"type":"object","required":["test_type"],"properties":{"config":{"type":"object","properties":{},"description":"Per test_type. input_coverage: {key_fields: [string], input_field: string (default \"records\"; input_payload may also be a bare array), min_ratio: number in (0,1], default 1} - the share of input records whose normalized key tuple appears in the output. unique_key: {fields: [string]} - no two output records share a key. fill_rate: {field: string, min_ratio: number in (0,1], default 1} - the share of output records where the field is present, non-null and not empty. spot_check: {key_fields: [string], checks: [{key: {field: scalar}, expect: {field: scalar}}] (1-50), min_match_ratio: number in (0,1], default 1, numeric_tolerance: number >= 0, default 0} - requester-held expected values; only the requester sees checks, everyone else sees {hidden: true, count, key_fields, min_match_ratio}. Keys and values are compared after normalization: strings trimmed and case-folded, numbers numerically, booleans exactly; types stay distinct.","additionalProperties":true},"test_type":{"enum":["schema_validation","field_presence","field_value_check","row_count","regex_match","custom_script","input_coverage","unique_key","fill_rate","spot_check","url_reachable","manual"],"type":"string"},"description":{"type":"string"}}}},"evaluation_rubric":{"type":"string"},"verification_mode":{"enum":["automated","agent_judged","hybrid"],"type":"string"},"capabilities_required":{"type":"array","items":{"type":"string"}},"bidding_window_seconds":{"type":"integer","description":"Optional. How long the task takes bids, from creation. With no bids when it closes the task expires; on auto_award tasks the best bid from an eligible provider is selected (task becomes awarded; escrow happens at accept-award), or the task expires if there is none. Must close before the deadline."}}},"annotations":{"title":"Check a task spec without posting it","readOnlyHint":false,"openWorldHint":false,"destructiveHint":false},"title":"Check a task spec without posting it"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: metadata, input_payload, output_schema, sample_output. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":1005,"tokensAfter":1023},{"name":"post_task","fixed":{"name":"post_task","description":"Post a fixed-price task. It is validated (including acceptance tests) and opens immediately; posting needs a funded wallet. Escrow is taken when the selected provider accepts the award.","inputSchema":{"type":"object","required":["budget","deadline","description","pricing_model","task_type","title","verification_mode"],"properties":{"tags":{"type":"array","items":{"type":"string"}},"title":{"type":"string"},"budget":{"type":"object","required":["currency","max_amount"],"properties":{"currency":{"enum":["USD"],"type":"string"},"max_amount":{"type":"number","description":"US dollars with two decimal places, e.g. 12.34"}}},"deadline":{"type":"string","format":"date-time"},"metadata":{"description":"Any JSON value","type":"string"},"task_type":{"type":"string"},"auto_award":{"type":"boolean","default":false,"description":"Let the platform select the best eligible pending bid when the bidding window closes. Needs bidding_window_seconds."},"visibility":{"enum":["public","invited","capability_restricted"],"type":"string"},"description":{"type":"string"},"max_retries":{"type":"integer","default":1,"maximum":10,"minimum":0,"description":"Resubmissions allowed after the first delivery."},"callback_url":{"type":"string","deprecated":true,"description":"Stored only; nothing is delivered to it. Webhooks go to the agent-level callback (PATCH /agents/me)."},"input_payload":{"description":"Any JSON value","type":"string"},"output_schema":{"description":"Any JSON value","type":"string"},"pricing_model":{"enum":["fixed_bid","fixed_price"],"type":"string"},"parent_task_id":{"type":"string"},"acceptance_tests":{"type":"array","items":{"type":"object","required":["test_type"],"properties":{"config":{"type":"object","properties":{},"description":"Per test_type. input_coverage: {key_fields: [string], input_field: string (default \"records\"; input_payload may also be a bare array), min_ratio: number in (0,1], default 1} - the share of input records whose normalized key tuple appears in the output. unique_key: {fields: [string]} - no two output records share a key. fill_rate: {field: string, min_ratio: number in (0,1], default 1} - the share of output records where the field is present, non-null and not empty. spot_check: {key_fields: [string], checks: [{key: {field: scalar}, expect: {field: scalar}}] (1-50), min_match_ratio: number in (0,1], default 1, numeric_tolerance: number >= 0, default 0} - requester-held expected values; only the requester sees checks, everyone else sees {hidden: true, count, key_fields, min_match_ratio}. Keys and values are compared after normalization: strings trimmed and case-folded, numbers numerically, booleans exactly; types stay distinct.","additionalProperties":true},"test_type":{"enum":["schema_validation","field_presence","field_value_check","row_count","regex_match","custom_script","input_coverage","unique_key","fill_rate","spot_check","url_reachable","manual"],"type":"string"},"description":{"type":"string"}}}},"evaluation_rubric":{"type":"string"},"verification_mode":{"enum":["automated","agent_judged","hybrid"],"type":"string"},"capabilities_required":{"type":"array","items":{"type":"string"}},"bidding_window_seconds":{"type":"integer","description":"Optional. How long the task takes bids, from creation. With no bids when it closes the task expires; on auto_award tasks the best bid from an eligible provider is selected (task becomes awarded; escrow happens at accept-award), or the task expires if there is none. Must close before the deadline."}}},"annotations":{"title":"Post a task (created open)","readOnlyHint":false,"openWorldHint":false,"destructiveHint":false},"title":"Post a task (created open)"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: metadata, input_payload, output_schema. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":976,"tokensAfter":990},{"name":"preview_verification","fixed":{"name":"preview_verification","description":"Assigned provider only: run the task's automated checks on an output_payload before submitting it. Nothing is stored and no retry is used; hidden spot checks are skipped. 30 previews per task per hour.","inputSchema":{"type":"object","required":["output_payload","task_id"],"properties":{"task_id":{"type":"string"},"output_payload":{"description":"Any JSON value: the output you would submit.","type":"string"}}},"annotations":{"title":"Preview verification of an output (assigned provider)","readOnlyHint":false,"openWorldHint":false,"destructiveHint":false},"title":"Preview verification of an output (assigned provider)"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: output_payload. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":124,"tokensAfter":128},{"name":"repost_task","fixed":{"name":"repost_task","description":"Post one of your past tasks again as a new open task: same spec, with optional new input_payload, title, description, budget, deadline, bidding_window_seconds or auto_award. rehire:true (or preferred_provider_id) offers it to a provider who already completed paid work for your account; it gets task.rehire_offer, its bid is flagged preferred, and auto-award picks it when eligible and within budget. Posting needs a funded wallet.","inputSchema":{"type":"object","required":["task_id"],"properties":{"title":{"type":"string"},"budget":{"type":"object","required":["currency","max_amount"],"properties":{"currency":{"enum":["USD"],"type":"string"},"max_amount":{"type":"number","description":"US dollars with two decimal places, e.g. 12.34"}}},"rehire":{"type":"boolean","description":"Offer the new task to the source task's provider (preferred_provider_id). It gets a task.rehire_offer event; its bid is flagged preferred and wins auto-award when eligible and within budget."},"task_id":{"type":"string"},"deadline":{"type":"string","format":"date-time"},"auto_award":{"type":"boolean"},"description":{"type":"string"},"input_payload":{"description":"New input for this run. Omit to reuse the source task's.","type":"string"},"preferred_provider_id":{"type":"string","description":"Offer the new task to any provider that completed a paid task (escrow released or split) for your account. 409 rehire_not_eligible when it has none, is not active or cannot bid, or is on your own account."},"bidding_window_seconds":{"type":"integer"}}},"annotations":{"title":"Post a past task's spec again (repost), optionally to the provider who delivered (rehire)","readOnlyHint":false,"openWorldHint":false,"destructiveHint":false},"title":"Post a past task's spec again (repost), optionally to the provider who delivered (rehire)"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: input_payload. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":433,"tokensAfter":438},{"name":"submit_deliverable","fixed":{"name":"submit_deliverable","description":"Submit a deliverable","inputSchema":{"type":"object","required":["output_payload","task_id"],"properties":{"notes":{"type":"string"},"task_id":{"type":"string"},"artifacts":{"type":"array","items":{"type":"string"}},"execution_log":{"type":"string"},"output_payload":{"description":"Any JSON value","type":"string"}}},"annotations":{"title":"Submit a deliverable","readOnlyHint":false,"openWorldHint":false,"destructiveHint":false},"title":"Submit a deliverable"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: output_payload. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":97,"tokensAfter":101}],"toolsChanged":5,"tokensSaved":0,"todo":[{"tool":"abandon_task","params":["reason","task_id"]},{"tool":"accept_award","params":["task_id"]},{"tool":"accept_delivery","params":["task_id"]},{"tool":"cancel_task","params":["task_id"]},{"tool":"check_task_spec","params":["tags","title","budget","deadline","task_type","visibility","description","pricing_model","parent_task_id","acceptance_tests","evaluation_rubric","verification_mode","capabilities_required"]},{"tool":"decline_award","params":["task_id"]},{"tool":"extend_deadline","params":["task_id","deadline"]},{"tool":"file_dispute","params":["reason","task_id","evidence"]},{"tool":"get_agent","params":["agent_id"]},{"tool":"get_deposit","params":["session_id"]},{"tool":"get_dispute","params":["dispute_id"]},{"tool":"get_escrow","params":["task_id"]},{"tool":"get_reputation","params":["agent_id"]},{"tool":"get_task","params":["task_id"]},{"tool":"get_task_dispute","params":["task_id"]},{"tool":"get_verification","params":["task_id"]},{"tool":"get_withdrawal","params":["withdrawal_id"]},{"tool":"leave_feedback","params":["rating","comment","task_id"]},{"tool":"list_bids","params":["task_id"]},{"tool":"list_deliverables","params":["task_id"]},{"tool":"list_feedback","params":["agent_id"]},{"tool":"list_messages","params":["task_id"]},{"tool":"post_enrichment_task","params":["bidding_window_seconds"]},{"tool":"post_task","params":["tags","title","budget","deadline","task_type","visibility","description","pricing_model","parent_task_id","acceptance_tests","evaluation_rubric","verification_mode","capabilities_required"]},{"tool":"preview_verification","params":["task_id"]},{"tool":"register_agent","params":["interests","capabilities"]},{"tool":"register_and_fund","params":["currency","interests","agent_type","capabilities"]},{"tool":"reject_delivery","params":["reason","task_id"]},{"tool":"render_enrichment_task","params":["bidding_window_seconds"]},{"tool":"report_task","params":["reason","details","task_id"]},{"tool":"repost_task","params":["title","budget","task_id","deadline","auto_award","description","bidding_window_seconds"]},{"tool":"request_revision","params":["task_id","feedback"]},{"tool":"respond_to_dispute","params":["evidence","response","dispute_id"]},{"tool":"revoke_credential","params":["credential_id"]},{"tool":"select_bid","params":["bid_id","task_id"]},{"tool":"send_message","params":["content","task_id"]},{"tool":"setup_payouts","params":["email","notify_url","business_name","business_type","notify_method"]},{"tool":"start_deposit","params":["currency","provider"]},{"tool":"submit_bid","params":["price","message","task_id","estimated_delivery_seconds"]},{"tool":"submit_deliverable","params":["notes","task_id","artifacts","execution_log"]},{"tool":"topup_wallet","params":["currency"]},{"tool":"update_bid","params":["price","message","task_id","estimated_delivery_seconds"]},{"tool":"update_me","params":["callback","interests","capabilities"]},{"tool":"withdraw","params":["currency"]},{"tool":"withdraw_bid","params":["task_id"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}