{"openapi":"3.1.0","info":{"title":"Tech Twitter Public Evidence API","version":"1.0.0","description":"Read-only, citation-ready evidence from curated tech discourse, including tweets, topics, articles, historical days, and agent context bundles.","contact":{"name":"Tech Twitter","url":"https://www.techtwitter.com/contact","email":"hello@techtwitter.com"},"license":{"name":"MIT","identifier":"MIT"}},"servers":[{"url":"https://www.techtwitter.com","description":"Public production API"}],"externalDocs":{"description":"Tech Twitter developer portal","url":"https://www.techtwitter.com/developers"},"tags":[{"name":"Agent evidence","description":"Purpose-built context for AI agents."},{"name":"Public sources","description":"Underlying read-only evidence collections."}],"security":[],"paths":{"/api/agent/context":{"get":{"operationId":"getAgentContext","summary":"Build an agent evidence bundle","description":"Returns ranked source evidence and citation URLs for one supported Tech Twitter research question.","tags":["Agent evidence"],"parameters":[{"name":"kind","in":"query","required":false,"description":"Evidence recipe to run.","schema":{"type":"string","enum":["auto","what-changed","launches","arguments","read-list","narrative-alert"],"default":"auto"}},{"name":"question","in":"query","required":false,"description":"Natural-language question, up to 500 characters.","schema":{"type":"string","maxLength":500}},{"name":"q","in":"query","required":false,"description":"Optional search phrase, up to 200 characters.","schema":{"type":"string","maxLength":200}},{"name":"topic","in":"query","required":false,"description":"Optional topic name or slug, up to 120 characters.","schema":{"type":"string","maxLength":120}},{"name":"window","in":"query","required":false,"description":"Evidence lookback window.","schema":{"type":"string","enum":["24h","48h","7d"],"default":"24h"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of evidence rows.","schema":{"type":"integer","default":8,"minimum":1,"maximum":20}}],"responses":{"200":{"description":"A citation-ready agent evidence bundle.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentContext"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"429":{"description":"The public rate limit has been exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"The evidence service is temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/a2a":{"post":{"operationId":"sendAgentMessage","summary":"Send a stateless A2A message","description":"Runs the same evidence builder through the stateless JSON-RPC SendMessage method for A2A clients. A non-empty taskId returns Task not found (-32001). SendStreamingMessage, SubscribeToTask, and GetExtendedAgentCard return Unsupported operation (-32004); push-notification configuration methods return Push notification not supported (-32003). Truly unknown methods return Method not found (-32601).","tags":["Agent evidence"],"parameters":[{"name":"A2A-Version","in":"header","required":true,"description":"A2A protocol version. Send 1.0 as a header; the same value is also accepted as an A2A-Version query parameter.","schema":{"type":"string","const":"1.0"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2ARequest"},"examples":{"launches":{"summary":"Request recent product-launch evidence","value":{"jsonrpc":"2.0","id":"ctx-1","method":"SendMessage","params":{"message":{"messageId":"msg-client-1","role":"ROLE_USER","parts":[{"text":"What launched in developer tools this week?"}],"metadata":{"kind":"launches","window":"7d","limit":8}}}}}}}}},"responses":{"200":{"description":"A JSON-RPC result or protocol error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2AResponse"}}}},"204":{"description":"No response body is returned for a JSON-RPC notification."},"400":{"description":"A JSON-RPC parse or request error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2AResponse"}}}},"405":{"description":"The HTTP method is not supported by the A2A endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2AResponse"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"413":{"description":"The JSON-RPC body exceeded 32 KiB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2AResponse"}}}},"429":{"description":"The public rate limit has been exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2AResponse"}}}},"503":{"description":"The evidence service is temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2AResponse"}}}}}}},"/api/command/tweets-by-date":{"get":{"operationId":"listTweetsByDate","summary":"List ranked tweets for a day","description":"Returns the ranked command-center tweet stream for the latest window or a calendar day.","tags":["Public sources"],"parameters":[{"name":"date","in":"query","required":false,"description":"latest, today, yesterday, or an ISO calendar date.","schema":{"type":"string","oneOf":[{"type":"string","enum":["latest","today","yesterday"]},{"type":"string","format":"date"}],"default":"today"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of tweets.","schema":{"type":"integer","default":10,"minimum":1,"maximum":50}},{"name":"topic","in":"query","required":false,"description":"Optional topic filter.","schema":{"type":"string","maxLength":120,"pattern":"^[a-zA-Z0-9+#._ /-]{1,120}$"}},{"name":"tz","in":"query","required":false,"description":"IANA timezone used to interpret calendar dates.","schema":{"type":"string","default":"UTC","maxLength":64,"examples":["UTC","America/Los_Angeles"]}}],"responses":{"200":{"description":"A ranked collection of published tweets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LatestTweetCollection"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"500":{"description":"The service could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/command/heatmap":{"get":{"operationId":"listTopicHeatmap","summary":"List active topics","description":"Returns topic frequency and engagement totals over a bounded recent window.","tags":["Public sources"],"parameters":[{"name":"days","in":"query","required":false,"description":"Number of recent days to inspect.","schema":{"type":"integer","default":3,"minimum":1,"maximum":30}}],"responses":{"200":{"description":"Topic activity rows.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HeatmapCollection"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"500":{"description":"The service could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/command/streams":{"get":{"operationId":"listCategoryStream","summary":"List a category stream","description":"Returns recent ranked tweets matching one command-center category and optional topic.","tags":["Public sources"],"parameters":[{"name":"category","in":"query","required":false,"description":"Command-center category.","schema":{"type":"string","enum":["ai-ml","startups","coding","product","platform"],"default":"ai-ml"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of tweets.","schema":{"type":"integer","default":10,"minimum":1,"maximum":50}},{"name":"topic","in":"query","required":false,"description":"Optional topic filter.","schema":{"type":"string","maxLength":120}}],"responses":{"200":{"description":"A ranked collection of published tweets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountedTweetCollection"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"500":{"description":"The service could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/command/hot-takes":{"get":{"operationId":"listHotDiscussions","summary":"List reply-heavy discussions","description":"Returns recent, high-visibility tweets ranked by discussion activity.","tags":["Public sources"],"responses":{"200":{"description":"Reply-heavy published tweets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HotTakeCollection"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"500":{"description":"The service could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/command/narratives":{"get":{"operationId":"listNarratives","summary":"List emerging narratives","description":"Returns emerging keywords, momentum, connected terms, and hot topics from 72 hours.","tags":["Public sources"],"responses":{"200":{"description":"Narrative momentum collections.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NarrativeCollection"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"500":{"description":"The service could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/tweets/trending":{"get":{"operationId":"listTrendingTweets","summary":"List trending tweets","description":"Returns quality-ranked published tweets with bounded shallow pagination.","tags":["Public sources"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Maximum number of tweets.","schema":{"type":"integer","default":20,"minimum":1,"maximum":50}},{"name":"offset","in":"query","required":false,"description":"Shallow result offset.","schema":{"type":"integer","default":0,"minimum":0,"maximum":100}}],"responses":{"200":{"description":"Trending published tweets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrendingTweetCollection"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"500":{"description":"The service could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/topics":{"get":{"operationId":"listTopics","summary":"List topic metadata","description":"Returns the public topic taxonomy, optionally filtered to recent or enriched topics.","tags":["Public sources"],"parameters":[{"name":"category","in":"query","required":false,"description":"Optional exact topic category.","schema":{"type":"string"}},{"name":"trending","in":"query","required":false,"description":"Only include topics active in the last seven days.","schema":{"type":"boolean","default":false}},{"name":"limit","in":"query","required":false,"description":"Maximum number of topics.","schema":{"type":"integer","default":20,"minimum":1,"maximum":50}},{"name":"with_metadata","in":"query","required":false,"description":"Only include topics with complete metadata.","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Public topic metadata.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicTopicCollection"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"500":{"description":"The service could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/articles":{"get":{"operationId":"listArticles","summary":"List long-form articles","description":"Returns published long-form article rows using a bounded keyset cursor.","tags":["Public sources"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Maximum number of articles.","schema":{"type":"integer","default":20,"minimum":1,"maximum":50}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor from the previous page.","schema":{"type":"string","maxLength":1024,"pattern":"^[A-Za-z0-9_-]+$"}}],"responses":{"200":{"description":"Published long-form articles.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticleCollection"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"500":{"description":"The service could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/time-travel/{date}":{"get":{"operationId":"getTimeTravelDay","summary":"Get one historical day","description":"Returns the quality-ranked Time Travel read model for one valid ISO calendar day.","tags":["Public sources"],"parameters":[{"name":"date","in":"path","required":true,"description":"ISO calendar date within the Time Travel archive.","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"A historical day and its published tweets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeTravelDay"}}}},"404":{"description":"The date is outside the available archive.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"500":{"description":"The service could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}},"components":{"schemas":{"ApiError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","hint"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code.","examples":["invalid_parameter"]},"message":{"type":"string","description":"Human-readable explanation of the failure."},"hint":{"type":"string","description":"A concrete next step that can resolve the failure."}},"additionalProperties":false}},"additionalProperties":false},"PublicProfile":{"type":"object","required":["id","handle","name"],"properties":{"id":{"type":"string","format":"uuid"},"handle":{"type":"string"},"name":{"type":"string"},"bio":{"type":["string","null"]},"avatar_url":{"type":["string","null"],"format":"uri"},"banner_url":{"type":["string","null"],"format":"uri"},"location":{"type":["string","null"]},"website":{"type":["string","null"],"format":"uri"},"verified":{"type":["boolean","null"]},"follower_count":{"type":["integer","null"],"minimum":0},"following_count":{"type":["integer","null"],"minimum":0},"tweet_count":{"type":["integer","null"],"minimum":0},"listed_count":{"type":["integer","null"],"minimum":0},"joined_date":{"type":["string","null"],"format":"date-time"}},"additionalProperties":false},"Tweet":{"type":"object","description":"A published Tech Twitter evidence row.","required":["id","tweet_url","tweet_text","summary","author_name","author_handle","timestamp","comment_count","like_count","retweet_count","submitted_at","created_at","seo_title","bookmark_count","image_url","keywords","video_url","video_thumbnail_url","image_grid_urls","profile_id","link_card_url","link_card_title","link_card_image_url","link_card_domain","is_pinned","pinned_at","content_type","article_title","article_image_url","slug","quality_score"],"properties":{"id":{"type":"string","format":"uuid"},"tweet_url":{"type":"string","format":"uri"},"tweet_text":{"type":"string"},"summary":{"type":["string","null"]},"author_name":{"type":"string"},"author_handle":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"comment_count":{"type":["integer","null"],"minimum":0},"like_count":{"type":["integer","null"],"minimum":0},"retweet_count":{"type":["integer","null"],"minimum":0},"submitted_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":["string","null"],"format":"date-time"},"seo_title":{"type":["string","null"]},"bookmark_count":{"type":["integer","null"],"minimum":0},"image_url":{"type":["string","null"],"format":"uri"},"keywords":{"oneOf":[{"type":"array","items":{"type":"string"},"maxItems":10},{"type":"null"}]},"video_url":{"type":["string","null"],"format":"uri"},"video_thumbnail_url":{"type":["string","null"],"format":"uri"},"image_grid_urls":{"type":["array","null"],"items":{"type":"string","format":"uri"}},"profile_id":{"type":["string","null"],"format":"uuid"},"link_card_url":{"type":["string","null"],"format":"uri"},"link_card_title":{"type":["string","null"]},"link_card_image_url":{"type":["string","null"],"format":"uri"},"link_card_domain":{"type":["string","null"]},"is_pinned":{"type":["boolean","null"]},"pinned_at":{"type":["string","null"],"format":"date-time"},"content_type":{"type":["string","null"],"enum":["tweet","article",null]},"article_title":{"type":["string","null"]},"article_image_url":{"type":["string","null"],"format":"uri"},"slug":{"type":["string","null"]},"quality_score":{"type":["integer","null"],"minimum":1,"maximum":10},"noindex":{"type":"boolean"},"profiles":{"oneOf":[{"$ref":"#/components/schemas/PublicProfile"},{"type":"null"}]}},"additionalProperties":false},"CountedTweetCollection":{"type":"object","required":["tweets","count"],"properties":{"tweets":{"type":"array","items":{"$ref":"#/components/schemas/Tweet"}},"count":{"type":"integer","minimum":0}},"additionalProperties":false},"LatestTweetCollection":{"type":"object","required":["tweets","count"],"properties":{"tweets":{"type":"array","items":{"$ref":"#/components/schemas/Tweet"}},"count":{"type":"integer","minimum":0},"hasMore":{"type":"boolean"},"overflowTweetId":{"type":["string","null"]}},"additionalProperties":false},"TrendingTweetCollection":{"type":"object","required":["tweets","total","hasMore"],"properties":{"tweets":{"type":"array","items":{"$ref":"#/components/schemas/Tweet"}},"total":{"type":"integer","minimum":0},"hasMore":{"type":"boolean"}},"additionalProperties":false},"HotTake":{"type":"object","description":"A published tweet with its replies-to-likes discussion ratio.","required":["id","tweet_url","tweet_text","summary","author_name","author_handle","timestamp","comment_count","like_count","retweet_count","submitted_at","created_at","seo_title","bookmark_count","image_url","keywords","video_url","video_thumbnail_url","image_grid_urls","profile_id","link_card_url","link_card_title","link_card_image_url","link_card_domain","is_pinned","pinned_at","content_type","article_title","article_image_url","slug","quality_score","replyRatio"],"properties":{"id":{"type":"string","format":"uuid"},"tweet_url":{"type":"string","format":"uri"},"tweet_text":{"type":"string"},"summary":{"type":["string","null"]},"author_name":{"type":"string"},"author_handle":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"comment_count":{"type":["integer","null"],"minimum":0},"like_count":{"type":["integer","null"],"minimum":0},"retweet_count":{"type":["integer","null"],"minimum":0},"submitted_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":["string","null"],"format":"date-time"},"seo_title":{"type":["string","null"]},"bookmark_count":{"type":["integer","null"],"minimum":0},"image_url":{"type":["string","null"],"format":"uri"},"keywords":{"oneOf":[{"type":"array","items":{"type":"string"},"maxItems":10},{"type":"null"}]},"video_url":{"type":["string","null"],"format":"uri"},"video_thumbnail_url":{"type":["string","null"],"format":"uri"},"image_grid_urls":{"type":["array","null"],"items":{"type":"string","format":"uri"}},"profile_id":{"type":["string","null"],"format":"uuid"},"link_card_url":{"type":["string","null"],"format":"uri"},"link_card_title":{"type":["string","null"]},"link_card_image_url":{"type":["string","null"],"format":"uri"},"link_card_domain":{"type":["string","null"]},"is_pinned":{"type":["boolean","null"]},"pinned_at":{"type":["string","null"],"format":"date-time"},"content_type":{"type":["string","null"],"enum":["tweet","article",null]},"article_title":{"type":["string","null"]},"article_image_url":{"type":["string","null"],"format":"uri"},"slug":{"type":["string","null"]},"quality_score":{"type":["integer","null"],"minimum":1,"maximum":10},"noindex":{"type":"boolean"},"profiles":{"oneOf":[{"$ref":"#/components/schemas/PublicProfile"},{"type":"null"}]},"replyRatio":{"type":"number","minimum":0}},"additionalProperties":false},"HotTakeCollection":{"type":"object","required":["tweets","count"],"properties":{"tweets":{"type":"array","items":{"$ref":"#/components/schemas/HotTake"}},"count":{"type":"integer","minimum":0}},"additionalProperties":false},"ArticleCollection":{"type":"object","required":["articles","total","limit","offset","nextCursor","hasMore"],"properties":{"articles":{"type":"array","items":{"$ref":"#/components/schemas/Tweet"}},"total":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1,"maximum":50},"offset":{"type":"integer","const":0},"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"additionalProperties":false},"AgentEvidenceProvenance":{"type":"object","required":["table"],"properties":{"table":{"type":"string"},"id":{"type":"string"},"contentType":{"type":"string"}},"additionalProperties":false},"AgentEvidenceAuthor":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"handle":{"type":"string"},"avatarUrl":{"type":["string","null"],"format":"uri"},"profileUrl":{"type":"string","format":"uri"}},"additionalProperties":false},"AgentEvidence":{"type":"object","required":["id","sourceType","provenance","title","text","metrics","topics","whyIncluded","sourceEndpoint","canonicalUrl"],"properties":{"id":{"type":"string"},"sourceType":{"type":"string","enum":["tweet","article","topic","profile"]},"provenance":{"$ref":"#/components/schemas/AgentEvidenceProvenance"},"title":{"type":"string"},"text":{"type":"string"},"summary":{"type":["string","null"]},"author":{"oneOf":[{"$ref":"#/components/schemas/AgentEvidenceAuthor"},{"type":"null"}]},"timestamp":{"type":["string","null"],"format":"date-time"},"metrics":{"type":"object","additionalProperties":{"type":"number"}},"qualityScore":{"type":["integer","null"],"minimum":1,"maximum":10},"topics":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"slug":{"type":"string"}}}},"whyIncluded":{"type":"string"},"sourceEndpoint":{"type":"string","format":"uri"},"canonicalUrl":{"type":"string","format":"uri"},"sourceUrl":{"type":["string","null"],"format":"uri"}},"additionalProperties":false},"AgentFacet":{"type":"object","required":["name","value","count"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"count":{"type":"integer","minimum":0},"href":{"type":"string","format":"uri"}},"additionalProperties":false},"AgentFacetMetrics":{"type":"object","required":["evidenceCount","maxLimit"],"properties":{"evidenceCount":{"type":"integer","minimum":0},"maxLimit":{"type":"integer","minimum":1,"maximum":20}},"additionalProperties":false},"AgentContextFacets":{"type":"object","required":["topics","authors","sources","metrics"],"properties":{"topics":{"type":"array","items":{"$ref":"#/components/schemas/AgentFacet"}},"authors":{"type":"array","items":{"$ref":"#/components/schemas/AgentFacet"}},"sources":{"type":"array","items":{"$ref":"#/components/schemas/AgentFacet"}},"metrics":{"$ref":"#/components/schemas/AgentFacetMetrics"}},"additionalProperties":false},"AgentContextNext":{"type":"object","required":["context","a2a","agentCard","llmsFull","relatedEndpoints"],"properties":{"context":{"type":"string","format":"uri"},"a2a":{"type":"string","format":"uri"},"agentCard":{"type":"string","format":"uri"},"llmsFull":{"type":"string","format":"uri"},"relatedEndpoints":{"type":"array","items":{"type":"string","format":"uri"}}},"additionalProperties":false},"AgentContext":{"type":"object","required":["kind","question","query","generatedAt","window","instructions","evidence","facets","next"],"properties":{"kind":{"type":"string","enum":["what-changed","launches","arguments","read-list","narrative-alert"]},"question":{"type":"string"},"query":{"type":"string"},"generatedAt":{"type":"string","format":"date-time"},"window":{"type":"object","required":["label","start","end"],"properties":{"label":{"type":"string","enum":["24h","48h","7d"]},"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"}}},"instructions":{"type":"array","items":{"type":"string"}},"evidence":{"type":"array","items":{"$ref":"#/components/schemas/AgentEvidence"}},"facets":{"$ref":"#/components/schemas/AgentContextFacets"},"next":{"$ref":"#/components/schemas/AgentContextNext"}},"additionalProperties":false},"HeatmapTopic":{"type":"object","required":["keyword","slug","count","engagement"],"properties":{"keyword":{"type":"string"},"slug":{"type":"string"},"count":{"type":"integer","minimum":0},"engagement":{"type":"integer","minimum":0}},"additionalProperties":false},"HeatmapCollection":{"type":"object","required":["topics"],"properties":{"topics":{"type":"array","items":{"$ref":"#/components/schemas/HeatmapTopic"}}},"additionalProperties":false},"PublicTopic":{"type":"object","required":["id","name","display_name","slug","tweet_count","description","long_description","category","related_topic_ids","metadata_updated_at","created_at","last_tweet_at"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"display_name":{"type":"string"},"slug":{"type":"string"},"tweet_count":{"type":["integer","null"],"minimum":0},"description":{"type":["string","null"]},"long_description":{"type":["string","null"]},"category":{"type":["string","null"]},"related_topic_ids":{"type":["array","null"],"items":{"type":"string","format":"uuid"}},"metadata_updated_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":["string","null"],"format":"date-time"},"last_tweet_at":{"type":["string","null"],"format":"date-time"}},"additionalProperties":false},"PublicTopicCollection":{"type":"object","required":["topics"],"properties":{"topics":{"type":"array","items":{"$ref":"#/components/schemas/PublicTopic"}}},"additionalProperties":false},"NarrativeTrend":{"type":"object","required":["keyword","mentionCount","engagementTotal","firstSeen","dayOverDay","streak","todayCount","trend"],"properties":{"keyword":{"type":"string"},"mentionCount":{"type":"integer","minimum":0},"engagementTotal":{"type":"integer","minimum":0},"firstSeen":{"type":"string","format":"date-time"},"dayOverDay":{"type":"integer"},"streak":{"type":"integer","enum":[0,2,3]},"todayCount":{"type":"integer","minimum":0},"trend":{"type":"string","enum":["emerging","momentum"]}},"additionalProperties":false},"ConnectedNarrative":{"type":"object","required":["keywords","coOccurrence"],"properties":{"keywords":{"type":"array","items":{"type":"string"},"minItems":2,"maxItems":2},"coOccurrence":{"type":"integer","minimum":0}},"additionalProperties":false},"HotNarrative":{"type":"object","required":["keyword","count","engagement"],"properties":{"keyword":{"type":"string"},"count":{"type":"integer","minimum":0},"engagement":{"type":"integer","minimum":0}},"additionalProperties":false},"NarrativeCollection":{"type":"object","required":["emerging","momentum","connected","hotToday"],"properties":{"emerging":{"type":"array","items":{"$ref":"#/components/schemas/NarrativeTrend"}},"momentum":{"type":"array","items":{"$ref":"#/components/schemas/NarrativeTrend"}},"connected":{"type":"array","items":{"$ref":"#/components/schemas/ConnectedNarrative"}},"hotToday":{"type":"array","items":{"$ref":"#/components/schemas/HotNarrative"}}},"additionalProperties":false},"TimeTravelDay":{"type":"object","required":["tweets","totalCount","uniqueAuthors","lastmod"],"properties":{"tweets":{"type":"array","items":{"$ref":"#/components/schemas/Tweet"}},"totalCount":{"type":"integer","minimum":0},"uniqueAuthors":{"type":"integer","minimum":0},"lastmod":{"type":["string","null"],"format":"date-time"}},"additionalProperties":false},"JsonRpcId":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"null"}]},"A2AMetadata":{"type":"object","properties":{"question":{"type":"string"},"text":{"type":"string"},"kind":{"type":"string","enum":["auto","what-changed","launches","arguments","read-list","narrative-alert"]},"q":{"type":"string"},"topic":{"type":"string"},"window":{"type":"string","enum":["24h","48h","7d"]},"limit":{"type":"integer","minimum":1,"maximum":20}},"additionalProperties":true},"A2ATextInputPart":{"type":"object","required":["text"],"properties":{"text":{"type":"string"},"metadata":{"type":"object","additionalProperties":true},"filename":{"type":"string"},"mediaType":{"type":"string"}},"additionalProperties":false},"A2ADataInputPart":{"type":"object","required":["data"],"properties":{"data":{},"metadata":{"type":"object","additionalProperties":true},"filename":{"type":"string"},"mediaType":{"type":"string"}},"additionalProperties":false},"A2AInputPart":{"oneOf":[{"$ref":"#/components/schemas/A2ATextInputPart"},{"$ref":"#/components/schemas/A2ADataInputPart"}]},"A2AInputMessage":{"type":"object","required":["messageId","role","parts"],"properties":{"messageId":{"type":"string","minLength":1},"contextId":{"type":"string","minLength":1,"description":"Optional conversation identifier. The response echoes this value; when omitted, the server creates one."},"taskId":{"type":"string","minLength":1,"description":"Task continuation is not supported. Any supplied non-empty taskId returns Task not found (-32001)."},"role":{"type":"string","const":"ROLE_USER"},"parts":{"type":"array","minItems":1,"items":{"$ref":"#/components/schemas/A2AInputPart"}},"metadata":{"$ref":"#/components/schemas/A2AMetadata"},"extensions":{"type":"array","items":{"type":"string","format":"uri"}},"referenceTaskIds":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"A2ASendMessageConfiguration":{"type":"object","properties":{"acceptedOutputModes":{"type":"array","items":{"type":"string"}},"historyLength":{"type":"integer","minimum":0},"returnImmediately":{"type":"boolean"}},"additionalProperties":false},"A2ARequestParams":{"type":"object","required":["message"],"properties":{"tenant":{"type":"string"},"message":{"$ref":"#/components/schemas/A2AInputMessage"},"configuration":{"$ref":"#/components/schemas/A2ASendMessageConfiguration"},"metadata":{"$ref":"#/components/schemas/A2AMetadata"}},"additionalProperties":false},"A2ARequest":{"type":"object","required":["jsonrpc","method","params"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"$ref":"#/components/schemas/JsonRpcId"},"method":{"type":"string","const":"SendMessage"},"params":{"$ref":"#/components/schemas/A2ARequestParams"}},"additionalProperties":false},"A2ADataPart":{"type":"object","required":["mediaType","data"],"properties":{"mediaType":{"type":"string","const":"application/json"},"data":{"$ref":"#/components/schemas/AgentContext"}},"additionalProperties":false},"A2AMessageMetadata":{"type":"object","required":["kind","generatedAt"],"properties":{"kind":{"type":"string","enum":["what-changed","launches","arguments","read-list","narrative-alert"]},"generatedAt":{"type":"string","format":"date-time"}},"additionalProperties":true},"A2AMessage":{"type":"object","required":["messageId","contextId","role","parts","metadata"],"properties":{"messageId":{"type":"string"},"contextId":{"type":"string","minLength":1,"description":"Conversation identifier. The response echoes a client-supplied contextId or contains a server-generated value."},"role":{"type":"string","const":"ROLE_AGENT"},"parts":{"type":"array","minItems":1,"maxItems":1,"items":{"$ref":"#/components/schemas/A2ADataPart"}},"metadata":{"$ref":"#/components/schemas/A2AMessageMetadata"}},"additionalProperties":false},"A2AResult":{"type":"object","required":["message"],"properties":{"message":{"$ref":"#/components/schemas/A2AMessage"}},"additionalProperties":false},"A2AErrorDetail":{"type":"object","required":["@type"],"properties":{"@type":{"type":"string"}},"additionalProperties":true},"A2AError":{"type":"object","required":["code","message"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/A2AErrorDetail"}}},"additionalProperties":false},"A2ASuccessResponse":{"type":"object","required":["jsonrpc","id","result"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"$ref":"#/components/schemas/JsonRpcId"},"result":{"$ref":"#/components/schemas/A2AResult"}},"additionalProperties":false},"A2AErrorResponse":{"type":"object","required":["jsonrpc","id","error"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"$ref":"#/components/schemas/JsonRpcId"},"error":{"$ref":"#/components/schemas/A2AError"}},"additionalProperties":false},"A2AResponse":{"oneOf":[{"$ref":"#/components/schemas/A2ASuccessResponse"},{"$ref":"#/components/schemas/A2AErrorResponse"}]}}}}