Foresea · Schema

AgentAnalyzeRequest

Ask the analysis agent to work a live question end-to-end.

Prediction-MarketIntelligenceForecastingData AnalyticsBusiness

Properties

Name Type Description
question object Market question. Optional if a market identifier is given.
platform object 'polymarket' or 'kalshi' to fetch a live price.
market_platform object Prediction-market venue supplied by the forecasting UI.
market_ident object Polymarket slug or Kalshi ticker supplied by the forecasting UI.
market_url object
slug object Polymarket market slug.
market_id object Polymarket numeric market id.
ticker object Kalshi market ticker.
description string
resolution_criteria string
categories array
news_articles array
market_probability object Override market price (0..1 or 0..100) when not fetching.
market_bid object
market_ask object
market_volume object
market_liquidity object
resolve_time object
variant string
evidence_top_k integer
skills array Up to 5 custom skills to run.
builtin_skills boolean Also run the built-in forecasting toolkit (base rate, scenario decomposition, red team, key drivers).
ground_in_record boolean Condition the forecast on the model's own live track-record calibration.
tool_loop boolean Use a ReAct tool-using loop (model plans + calls tools) instead of the fixed pipeline.
benchmark_tools boolean When tool_loop=true, expose Foresea's market-research toolkit. place_trade and manage_notes are reserved for Foresea's scheduled trading agents and are not available over the API.
benchmark_tool_names object When benchmark_tools=true, restrict the exposed tool set to named Foresea tools -- e.g. a research-only call passes ['web_search', 'orderbook'], a pure-reasoning call passes [] (no tools, so the model
max_tool_steps integer Max tool calls in the loop.
effort_tier object How much analysis effort this question gets (evidence fetch depth, which built-in skills run, tool-loop step budget). Set explicitly to override; left unset, the server estimates it from the question.
history array Prior conversation turns for follow-up context.
conversation_steer string Optional per-conversation steering instruction.
openrouter_api_key object
openrouter_model object
model object
provider_base_url object
ollama_base_url object
agent_profile_id object Private copied-agent recipe. Its research model and instructions are server-resolved.
client_run_key object Caller-supplied idempotency key, stored on the durable AgentRun this request creates. If your own request times out waiting for a response, the run may still be progressing server-side -- look it up w
max_tokens object Max output tokens for the agent tool loop and skills.
View JSON Schema on GitHub

JSON Schema

foresea-ink-agent-analyze-request-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/foresea-ink/json-schema/foresea-ink-agent-analyze-request-schema.json",
  "title": "AgentAnalyzeRequest",
  "description": "Ask the analysis agent to work a live question end-to-end.",
  "x-generated": "2026-11-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/foresea-ink-openapi.json#/components/schemas/AgentAnalyzeRequest",
  "properties": {
    "question": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Question",
      "description": "Market question. Optional if a market identifier is given."
    },
    "platform": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 40
        },
        {
          "type": "null"
        }
      ],
      "title": "Platform",
      "description": "'polymarket' or 'kalshi' to fetch a live price."
    },
    "market_platform": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 40
        },
        {
          "type": "null"
        }
      ],
      "title": "Market Platform",
      "description": "Prediction-market venue supplied by the forecasting UI."
    },
    "market_ident": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ],
      "title": "Market Ident",
      "description": "Polymarket slug or Kalshi ticker supplied by the forecasting UI."
    },
    "market_url": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 2000
        },
        {
          "type": "null"
        }
      ],
      "title": "Market Url"
    },
    "slug": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ],
      "title": "Slug",
      "description": "Polymarket market slug."
    },
    "market_id": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 80
        },
        {
          "type": "null"
        }
      ],
      "title": "Market Id",
      "description": "Polymarket numeric market id."
    },
    "ticker": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 80
        },
        {
          "type": "null"
        }
      ],
      "title": "Ticker",
      "description": "Kalshi market ticker."
    },
    "description": {
      "type": "string",
      "maxLength": 4000,
      "title": "Description",
      "default": ""
    },
    "resolution_criteria": {
      "type": "string",
      "maxLength": 12000,
      "title": "Resolution Criteria",
      "default": ""
    },
    "categories": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "maxItems": 20,
      "title": "Categories"
    },
    "news_articles": {
      "items": {
        "$ref": "#/$defs/NewsArticle"
      },
      "type": "array",
      "maxItems": 20,
      "title": "News Articles"
    },
    "market_probability": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Market Probability",
      "description": "Override market price (0..1 or 0..100) when not fetching."
    },
    "market_bid": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Market Bid"
    },
    "market_ask": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Market Ask"
    },
    "market_volume": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Market Volume"
    },
    "market_liquidity": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Market Liquidity"
    },
    "resolve_time": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 50
        },
        {
          "type": "null"
        }
      ],
      "title": "Resolve Time"
    },
    "variant": {
      "type": "string",
      "maxLength": 64,
      "title": "Variant",
      "default": "variant0_neutral_baseline"
    },
    "evidence_top_k": {
      "type": "integer",
      "maximum": 100.0,
      "minimum": 1.0,
      "title": "Evidence Top K",
      "default": 20
    },
    "skills": {
      "items": {
        "$ref": "#/$defs/AgentSkill"
      },
      "type": "array",
      "maxItems": 5,
      "title": "Skills",
      "description": "Up to 5 custom skills to run."
    },
    "builtin_skills": {
      "type": "boolean",
      "title": "Builtin Skills",
      "description": "Also run the built-in forecasting toolkit (base rate, scenario decomposition, red team, key drivers).",
      "default": false
    },
    "ground_in_record": {
      "type": "boolean",
      "title": "Ground In Record",
      "description": "Condition the forecast on the model's own live track-record calibration.",
      "default": false
    },
    "tool_loop": {
      "type": "boolean",
      "title": "Tool Loop",
      "description": "Use a ReAct tool-using loop (model plans + calls tools) instead of the fixed pipeline.",
      "default": false
    },
    "benchmark_tools": {
      "type": "boolean",
      "title": "Benchmark Tools",
      "description": "When tool_loop=true, expose Foresea's market-research toolkit. place_trade and manage_notes are reserved for Foresea's scheduled trading agents and are not available over the API.",
      "default": false
    },
    "benchmark_tool_names": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array",
          "maxItems": 3
        },
        {
          "type": "null"
        }
      ],
      "title": "Benchmark Tool Names",
      "description": "When benchmark_tools=true, restrict the exposed tool set to named Foresea tools -- e.g. a research-only call passes ['web_search', 'orderbook'], a pure-reasoning call passes [] (no tools, so the model must answer on its first turn). Unset exposes every tool available to the caller. Naming place_trade or manage_notes over the API is refused with 403."
    },
    "max_tool_steps": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Max Tool Steps",
      "description": "Max tool calls in the loop.",
      "default": 8
    },
    "effort_tier": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "simple",
            "standard",
            "deep"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Effort Tier",
      "description": "How much analysis effort this question gets (evidence fetch depth, which built-in skills run, tool-loop step budget). Set explicitly to override; left unset, the server estimates it from the question."
    },
    "history": {
      "items": {
        "additionalProperties": {
          "type": "string"
        },
        "type": "object"
      },
      "type": "array",
      "maxItems": 24,
      "title": "History",
      "description": "Prior conversation turns for follow-up context."
    },
    "conversation_steer": {
      "type": "string",
      "maxLength": 1000,
      "title": "Conversation Steer",
      "description": "Optional per-conversation steering instruction.",
      "default": ""
    },
    "openrouter_api_key": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 256
        },
        {
          "type": "null"
        }
      ],
      "title": "Openrouter Api Key"
    },
    "openrouter_model": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 128
        },
        {
          "type": "null"
        }
      ],
      "title": "Openrouter Model"
    },
    "model": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 64
        },
        {
          "type": "null"
        }
      ],
      "title": "Model"
    },
    "provider_base_url": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 2000
        },
        {
          "type": "null"
        }
      ],
      "title": "Provider Base Url"
    },
    "ollama_base_url": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 500
        },
        {
          "type": "null"
        }
      ],
      "title": "Ollama Base Url"
    },
    "agent_profile_id": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 160,
          "pattern": "^agent_[a-zA-Z0-9_-]{12,150}$"
        },
        {
          "type": "null"
        }
      ],
      "title": "Agent Profile Id",
      "description": "Private copied-agent recipe. Its research model and instructions are server-resolved."
    },
    "client_run_key": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 120
        },
        {
          "type": "null"
        }
      ],
      "title": "Client Run Key",
      "description": "Caller-supplied idempotency key, stored on the durable AgentRun this request creates. If your own request times out waiting for a response, the run may still be progressing server-side -- look it up with GET /agent/runs?client_run_key=... instead of restarting."
    },
    "max_tokens": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 16384.0,
          "minimum": 1.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Tokens",
      "description": "Max output tokens for the agent tool loop and skills."
    }
  },
  "type": "object",
  "$defs": {
    "AgentSkill": {
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 60,
          "minLength": 1,
          "title": "Name",
          "description": "Short skill name, e.g. 'Base rate check'."
        },
        "instruction": {
          "type": "string",
          "maxLength": 2000,
          "minLength": 1,
          "title": "Instruction",
          "description": "What this skill should analyse."
        }
      },
      "type": "object",
      "required": [
        "name",
        "instruction"
      ],
      "title": "AgentSkill",
      "description": "A user-defined analysis step the agent runs over the question + evidence."
    },
    "NewsArticle": {
      "properties": {
        "title": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 500
            },
            {
              "type": "null"
            }
          ],
          "title": "Title",
          "description": "Article headline."
        },
        "summary": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 4000
            },
            {
              "type": "null"
            }
          ],
          "title": "Summary",
          "description": "Short human-written summary."
        },
        "summary_llm": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 4000
            },
            {
              "type": "null"
            }
          ],
          "title": "Summary Llm",
          "description": "LLM-generated summary."
        },
        "text": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 20000
            },
            {
              "type": "null"
            }
          ],
          "title": "Text",
          "description": "Full article body text."
        },
        "source": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ],
          "title": "Source",
          "description": "Publisher name (e.g. Reuters)."
        },
        "credibility": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Credibility",
          "description": "Credibility score breakdown."
        },
        "frs": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Frs",
          "description": "Future-Resolution Statement metadata."
        },
        "url": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2000
            },
            {
              "type": "null"
            }
          ],
          "title": "Url",
          "description": "Canonical article URL."
        },
        "authors": {
          "anyOf": [
            {},
            {
              "type": "null"
            }
          ],
          "title": "Authors",
          "description": "Author name(s)."
        },
        "publish_date": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 100
            },
            {
              "type": "null"
            }
          ],
          "title": "Publish Date",
          "description": "ISO 8601 publish timestamp."
        },
        "keywords": {
          "anyOf": [
            {},
            {
              "type": "null"
            }
          ],
          "title": "Keywords",
          "description": "Extracted keywords."
        },
        "relevance_score": {
          "anyOf": [
            {
              "type": "number",
              "maximum": 1.0,
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Relevance Score",
          "description": "Cosine similarity to the question (0–1)."
        },
        "search_query": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 500
            },
            {
              "type": "null"
            }
          ],
          "title": "Search Query",
          "description": "Query used to retrieve this article."
        }
      },
      "type": "object",
      "title": "NewsArticle",
      "description": "A news article passed as evidence context for the prediction."
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/foresea-ink-agent-analyze-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.