Production autonomous prediction market platform with private intelligence, x402 micropayments, commit-reveal privacy, and AI agent consensus. Includes Solidity smart contracts (PrivateClaimVerifier, UnifiedPredictionSubscription) and Python demo runners for hackathon submission.
This server has 32 tools spanning Solidity contracts, Python demo runners, and API clients. Critical issues: (1) STDIO transport caps protocol readiness at 50. (2) Most tools lack visible input schemas in the provided source, only 6 tools show explicit schema definitions (submitCommitment, claimWinnings, refundDeposit, setMarketOutcome, cancelMarket, setPredictionMarket). (3) Descriptions vary widely: contract tools have detailed docstrings (100-200 chars), but demo/synthesis tools have minimal descriptions (20-50 chars). (4) Parameter descriptions are inconsistent, some tools document constraints (e.g., 'Max 500 characters'), others do not. (5) No visible error handling guidance, recovery paths, or actionable error messages. (6) No tool annotations (readOnlyHint, destructiveHint, idempotentHint). (7) Output schemas are not documented for any tool. (8) Many tools appear inferred rather than explicitly registered (e.g., SynthesisClient methods, demo_runner functions).
Enroll project in a specific prize track on Synthesis.md.
Create or update hackathon project submission on Synthesis.md.
Get current participant profile from Synthesis.md API.
Get team info from Synthesis.md API.
List available prize tracks on Synthesis.md.
Log a conversation entry (required for submission) on Synthesis.md.
Submit project for judging on Synthesis.md.
Most tools lack visible input schemas in source code. Only 6 contract tools show explicit schema definitions; 26 tools have inferred or minimal schemas.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields without knowing response structure. Violates pattern:tool and pattern:response-shaper.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | <=2025-11-25 | v2 |
Provision agent identity, generate encrypted proof, and publish to Nostr. Generates Nostr keypair, API key, and encrypted proof (Kind 30099) containing agent metadata.
Execute x402 payment flow with private commitment. Agent discovers A2A endpoint, makes x402 payment, and submits private commitment to PrivateClaimVerifier.
Commit-reveal resolution: reveal secret, claim winnings, update reputation, and settle eCash note. Completes the privacy-preserving prediction market flow.
Build a Kind 30099 Nostr event with AES-256-GCM encrypted content. In production, the content is encrypted with a key derived from BLINDORACLE_MASTER_SECRET via HMAC-SHA256.
Cancel a market and allow deposits to be refunded. Only callable by the owner or the prediction market contract. Updates the market outcome status to CANCELLED.
Cancel a market before deadline. Only callable by the market creator. Allows refunds of all predictions.
Claim winnings from a settled market. Only available to predictors who chose the correct outcome. Transfers ETH to the predictor.
Claim winnings by revealing the secret, position, and amount. The contract reconstructs the commitment from the provided parameters and verifies it matches a stored commitment. The claiming address does NOT need to be the same as the depositing address. Winnings are calculated proportionally: winnings = (depositAmount * distributablePool) / winningPositionTotal where distributablePool = totalDeposits - platformFee.
Configure the CRE workflow author and expected workflow name. Only callable by the owner. Used to authorize CRE responses.
Create a new prediction market with a question and deadline. Returns the market ID.
Show that the commitment is opaque without the secret. Generate commitments with wrong guesses to prove they don't match.
Finalize a market after the dispute period ends. Settles the market and distributes winnings to predictors who chose the correct outcome.
Generate a PrivateClaimVerifier-style commitment. Replicates: keccak256(abi.encodePacked(secret, position, amount)). The commitment is opaque -- knowing only the commitment, you cannot determine position or amount without the secret.
Generate an x402 payment receipt for a position call. In production, this calls the x402 API gateway. In dry-run, generates a structurally valid receipt.
Receive AI verification result from CRE workflow. Implements IReceiver interface. Decodes the outcome from the report and updates market with AI confirmation. Transitions market to PENDING_FINALIZATION status.
Place a prediction on a market. Transfers ETH to the contract and records the prediction. Only allowed while market is OPEN and before deadline.
Call Venice LLM for private, uncensored market intelligence. Uses OpenAI-compatible API format. Falls back to structured demo output if no API key is available.
Raise a dispute on a market outcome during the dispute period. Requires staking at least 10% of the total pool. Transitions market to DISPUTED status and requests CRE re-verification.
Refund a deposit when a market is cancelled. Only callable by the owner or the prediction market contract. The refund is only available if the market status is CANCELLED.
Request settlement of a market. Transitions market to SETTLEMENT_REQUESTED status and emits SettlementRequested event which triggers CRE log workflow. Only callable after market deadline has passed.
Set the outcome of a market (YES or NO). Only callable by the owner or the prediction market contract. Updates the market outcome status to RESOLVED.
Update the platform fee percentage. Only callable by the owner. Fee is in basis points (200 = 2%).
Update the address of the UnifiedPredictionSubscription contract. Only callable by the owner.
Submit a commitment to a private position in a prediction market. The commitment hides the user's position (YES/NO). The contract only learns the position at claim time when the secret is revealed. Commitment format: keccak256(abi.encodePacked(secret, position, amount)) where amount must equal msg.value.
Update enhanced verification configuration parameters. Only callable by the owner.
No error handling guidance or recovery paths. Tools lack actionable error messages (e.g., 'Invalid status: got X, must be one of Y'). No distinction between retryable, user-fixable, and fatal errors.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes. All 32 tools lack these critical hints.
SynthesisClient methods (tools 26-32) have minimal descriptions (20-40 chars). These tools score 40-50 overall due to missing schemas and sparse documentation.