MCP 服务器

council-ai

io.github.omarkeshk/council-ai
AI 与智能体 公开且可连接 MCP 2025-11-25

此 MCP 可以做什么

Queries multiple frontier AI models in parallel, synthesizes consensus answers, performs multi-model code reviews, and supports document retrieval from an uploaded library.

council_models
Council Models
List the AI models available to the current user. Returns ID, provider, tier, context window, and capability flags (web search, vision, streaming). Use the IDs returned here as the `models` array argument to council_query / council_query_with_rag.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['userPlan', 'models'], 'properties': {'models': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'provider'], 'properties': {'id': {'type': 'string', 'description': 'Model ID â\x80\x94 pass these in the models argument of council tools.'}, 'name': {'type': 'string', 'description': 'Human-readable model name.'}, 'tier': {'type': 'string', 'description': 'Council pricing tier of the model.'}, 'modelId': {'type': 'string', 'description': 'Provider-side model identifier.'}, 'provider': {'type': 'string', 'description': 'Lab/provider, e.g. anthropic, openai, google.'}, 'maxTokens': {'type': ['number', 'null'], 'description': 'Context window size, when known.'}, 'supportsVision': {'type': 'boolean', 'description': 'Whether the model accepts images.'}, 'supportsStreaming': {'type': 'boolean', 'description': 'Whether the model streams tokens.'}, 'supportsWebSearch': {'type': 'boolean', 'description': 'Whether the model can search the web.'}}, 'additionalProperties': False}, 'description': 'Models available to this user, across all providers.'}, 'userPlan': {'type': 'string', 'description': "The user's current subscription plan."}}, 'additionalProperties': False}
council_query
Council Query
Send a prompt to a council of frontier AI models across 9 labs (Anthropic, OpenAI, Google, xAI, DeepSeek, Qwen, Mistral, Moonshot, z.ai). Returns each model's independent response plus a moderator-synthesized consensus answer with an agreement score and the key point of disagreement, when one exists. Use when a single-model answer might hallucinate or when verification across labs matters (research, contracts, architecture, legal, medical, code review). Adaptive-cost pattern: for a quick check, call with 2-3 models; if consensusScore comes back low (or keyDisagreement matters to the decision), escalate by re-running with more models — easy questions stay cheap, disputed ones get more compute. TIMEOUTS: a full council can run for minutes. If your MCP client has a fixed tool-call timeout, set async=true — you get a queryId back immediately and fetch the finished result with council_result. Call council_models first to pick specific model IDs, and council_usage to check remaining budget. Bills against the user's Council AI monthly budget.
只读 可访问外部资源
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['prompt'], 'properties': {'mode': {'enum': ['independent', 'sequential'], 'type': 'string', 'default': 'independent', 'description': "Cross-model visibility. 'independent' (default): all models answer in parallel, blind to each other â\x80\x94 best for unbiased comparison; the synthesis reconciles them. 'sequential': models answer one at a time and each later model sees the earlier answers, debate-style â\x80\x94 takes the SUM of per-model latencies instead of the max, so strongly consider async=true with it."}, 'async': {'type': 'boolean', 'default': False, 'description': 'When true, return {queryId, status:"running"} immediately instead of waiting for the council. Fetch the finished result with council_result. Use whenever your MCP client enforces a fixed tool-call timeout (a full council typically runs 1-3 minutes) or when querying 4+ models.'}, 'models': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 10, 'minItems': 2, 'description': 'Model IDs to include (2-10). Defaults to a cross-lab flagship council. Use council_models to list available IDs. Example: ["claude-fable-5.1", "gpt-5.6-sol", "gemini-3.8-flash"]'}, 'prompt': {'type': 'string', 'maxLength': 20000, 'minLength': 1, 'description': 'The question or task to send to the council. Include all needed context â\x80\x94 every query is stateless. Example: "Is optimistic locking or a distributed lock the better fit for this checkout flow? [paste flow description]"'}, 'synthesize': {'type': 'boolean', 'default': True, 'description': 'When true (default), include the moderator synthesis + consensus score. Set false to get only the raw per-model responses (faster, cheaper).'}, 'synthesisDirective': {'type': 'string', 'maxLength': 8000, 'minLength': 1, 'description': 'Optional instructions for the moderator that synthesizes the council\'s answers. The council models never see this â\x80\x94 it only shapes the synthesis. Use for special modes, e.g. devil\'s advocate: "Argue against the majority position â\x80\x94 find the strongest case that the consensus is wrong and surface every dissenting point." Or output contracts: "Answer VERDICT: SAFE/UNSAFE first, then justification." Omit for the standard balanced synthesis.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'errors': {'type': 'array', 'items': {'type': 'object', 'required': ['modelId', 'message'], 'properties': {'message': {'type': 'string'}, 'modelId': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Per-model failures, if any. The synthesis covers the models that responded.'}, 'status': {'enum': ['running', 'complete', 'failed'], 'type': 'string', 'description': 'Only present on async queries: "running" means poll council_result with the queryId.'}, 'queryId': {'type': 'string', 'description': 'Server-side ID of this council query. With async=true, pass it to council_result.'}, 'synthesis': {'type': 'string', 'description': 'Moderator-synthesized consensus answer across all models. Empty when synthesize=false; absent while an async query is still running.'}, 'durationMs': {'type': 'number', 'description': 'Wall-clock duration of the council run (fan-out + synthesis), in milliseconds.'}, 'wasSyncRun': {'type': 'boolean', 'description': 'True when this ran synchronously â\x80\x94 the path with the tight per-model timeout.'}, 'totalTokens': {'type': 'object', 'required': ['input', 'output'], 'properties': {'input': {'type': 'number', 'description': 'Prompt tokens across all council models.'}, 'output': {'type': 'number', 'description': 'Completion tokens across all council models.'}}, 'description': 'Aggregate token usage for this query across the whole council.', 'additionalProperties': False}, 'modelMapping': {'type': 'object', 'description': 'Anonymous reviewer label (M1..Mn) to model name mapping used during synthesis.', 'additionalProperties': {'type': 'string'}}, 'agreementType': {'anyOf': [{'enum': ['high', 'divergent'], 'type': 'string'}, {'type': 'null'}], 'description': "Agreement classification from the moderator's analysis. Null when synthesize=false."}, 'consensusScore': {'type': ['number', 'null'], 'description': 'Cross-model agreement score on the 0-100 scale. Null when synthesize=false; absent while an async query is still running.'}, 'synthesisError': {'type': ['string', 'null'], 'description': 'Set when moderator synthesis failed and the response degraded to raw per-model output.'}, 'droppedModelIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Requested model IDs that were skipped (unknown or retired). Call council_models for current IDs.'}, 'keyDisagreement': {'type': ['string', 'null'], 'description': 'The main point the models disagreed on, when one was identified. Often more decision-relevant than the consensus itself â\x80\x94 inspect it before acting on a low consensusScore. Null on high agreement or when synthesize=false.'}, 'timedOutModelIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Council members that failed by exceeding the per-model timeout. On a synchronous run (90s per model) this is recoverable: re-run the same query with async=true, which allows 300s. Slow reasoning models will time out on EVERY synchronous call.'}, 'budgetPercentUsed': {'type': ['number', 'null'], 'description': "The user's monthly Council budget consumption after this query, as a percentage (0-100+). Use it to decide whether another query is affordable. Council never reports budget in dollar amounts â\x80\x94 always reason and communicate in percentages."}, 'perModelResponses': {'type': 'object', 'description': "Each model's independent response, keyed by model name. Absent while an async query is still running.", 'additionalProperties': {'type': 'string'}}, 'consensusUnavailable': {'type': 'boolean', 'description': "True when the moderator's agreement verdict could not be parsed, so this run has no consensus score at all. Do not substitute a number â\x80\x94 report agreement as unknown."}}, 'additionalProperties': False}
council_query_with_rag
Council Query with RAG
Like council_query, but first retrieves the most relevant passages from the user's personal Council RAG library (uploaded PDFs, Word docs, contracts, research papers, codebases) and injects them into every model's prompt. Use when the question is about content the user has uploaded — contract review, research synthesis across a paper library, code review against an architecture doc, etc. Ultra-tier only.
只读 可访问外部资源
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['prompt'], 'properties': {'async': {'type': 'boolean', 'default': False, 'description': 'When true, retrieval runs immediately (sources are returned right away) but the council itself runs in the background â\x80\x94 fetch the finished answer with council_result. Use when your MCP client enforces a fixed tool-call timeout or when querying 4+ models.'}, 'models': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 10, 'minItems': 2, 'description': "Model IDs to include. Defaults to the user's preferred council."}, 'prompt': {'type': 'string', 'maxLength': 20000, 'minLength': 1, 'description': 'The question or task to send to the council. Example: "Review this NDA draft against our standard playbook terms."'}, 'project_id': {'type': 'string', 'description': 'Restrict retrieval to a specific Council project workspace.'}, 'synthesize': {'type': 'boolean', 'default': True, 'description': 'When true (default), include the moderator synthesis + consensus score.'}, 'library_query': {'type': 'string', 'description': "Optional retrieval-specific query. If omitted, the main prompt is used as the retrieval query. Set this when the user's prompt has unrelated framing but the concrete documents to retrieve are described by something different."}, 'retrieval_limit': {'type': 'number', 'maximum': 20, 'minimum': 1, 'description': 'Number of chunks to retrieve. Default: 8.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['retrievedChunks'], 'properties': {'status': {'enum': ['running', 'complete', 'failed'], 'type': 'string', 'description': 'Only present on async queries: "running" means poll council_result with the queryId.'}, 'queryId': {'type': 'string', 'description': 'Present on async queries â\x80\x94 pass it to council_result.'}, 'synthesis': {'type': 'string', 'description': 'Moderator-synthesized consensus answer, grounded in the retrieved library chunks. Absent while an async query is still running.'}, 'ragSkipped': {'type': 'boolean', 'description': 'True when retrieval found nothing and the query fell through to a plain council_query.'}, 'consensusScore': {'type': ['number', 'null'], 'description': 'Cross-model agreement score on the 0-100 scale. Null when synthesize=false; absent while an async query is still running.'}, 'retrievedChunks': {'type': 'array', 'items': {'type': 'object', 'properties': {'chunkId': {'type': 'string', 'description': 'ID of the retrieved chunk.'}, 'content': {'type': 'string', 'description': 'The retrieved passage text.'}, 'distance': {'type': 'number', 'description': 'Vector distance â\x80\x94 lower is more relevant.'}, 'filename': {'type': 'string', 'description': 'Source document filename.'}, 'documentId': {'type': 'string', 'description': 'ID of the parent document.'}, 'pageNumber': {'type': ['number', 'null'], 'description': 'Page number in the source document, when known.'}}, 'additionalProperties': False}, 'description': "Library chunks that were injected into every model's prompt. Empty when the library had no relevant content."}, 'perModelResponses': {'type': 'object', 'description': "Each model's independent response, keyed by model name. Absent while an async query is still running.", 'additionalProperties': {'type': 'string'}}}, 'additionalProperties': False}
council_result
Council Result
Fetch the result of a council_query started with async=true. Returns status "running" while the council is still working (wait 30-60 seconds and call again), the full synthesis + per-model responses once complete, or status "failed" with the error. Polling is free — the council run itself was already billed by council_query.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queryId'], 'properties': {'queryId': {'type': 'string', 'maxLength': 40, 'minLength': 10, 'description': 'The queryId returned by council_query when called with async=true.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queryId', 'status'], 'properties': {'error': {'type': 'string', 'description': 'Failure reason when status is "failed".'}, 'errors': {'type': 'array', 'items': {'type': 'object', 'required': ['modelId', 'message'], 'properties': {'message': {'type': 'string'}, 'modelId': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Per-model failures, if any. The synthesis covers the models that responded.'}, 'status': {'enum': ['running', 'complete', 'failed'], 'type': 'string', 'description': 'running â\x86\x92 poll again in 30-60s. complete â\x86\x92 full result below. failed â\x86\x92 see error.'}, 'queryId': {'type': 'string', 'description': 'The polled query ID.'}, 'elapsedMs': {'type': ['number', 'null'], 'description': 'Time since the query started, while running.'}, 'synthesis': {'type': 'string', 'description': 'Moderator-synthesized consensus answer. Present when status is "complete".'}, 'durationMs': {'type': ['number', 'null'], 'description': 'Wall-clock duration of the council run, in milliseconds.'}, 'totalTokens': {'type': 'object', 'required': ['input', 'output'], 'properties': {'input': {'type': 'number'}, 'output': {'type': 'number'}}, 'description': 'Aggregate token usage across the whole council.', 'additionalProperties': False}, 'modelMapping': {'type': 'object', 'description': 'Anonymous label (M1..Mn) to model ID mapping.', 'additionalProperties': {'type': 'string'}}, 'agreementType': {'anyOf': [{'enum': ['high', 'divergent'], 'type': 'string'}, {'type': 'null'}], 'description': "Agreement classification from the moderator's analysis."}, 'consensusScore': {'type': ['number', 'null'], 'description': 'Cross-model agreement score, 0-100. Null when the query ran with synthesize=false.'}, 'synthesisError': {'type': ['string', 'null'], 'description': 'Set when moderator synthesis failed and the response degraded to raw per-model output.'}, 'droppedModelIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Requested model IDs that were skipped (unknown or retired).'}, 'keyDisagreement': {'type': ['string', 'null'], 'description': 'The main point the models disagreed on, when one was identified.'}, 'budgetPercentUsed': {'type': ['number', 'null'], 'description': 'Monthly Council budget consumption, as a percentage (0-100+). Never dollars.'}, 'perModelResponses': {'type': 'object', 'description': "Each model's independent response, keyed by anonymous label (M1..Mn).", 'additionalProperties': {'type': 'string'}}}, 'additionalProperties': False}
council_review
Council Code Review
Multi-model code review. Sends a unified diff (or code snippet) to multiple frontier AI models from different labs in parallel, each acting as an independent reviewer with an explicit verdict + findings contract. Returns a verdict-first synthesis: overall SHIP/NO-SHIP, consensus score, confirmed findings (flagged by 2+ models), then dissents (single-model findings with reasoning), then each reviewer's verdict. Diffs are capped at 14,000 characters — split larger changes by file or hunk and call once per chunk. Bills against the user's Council AI monthly budget like any council query.
只读 可访问外部资源
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['diff'], 'properties': {'diff': {'type': 'string', 'minLength': 1, 'description': 'The unified diff (git diff output) or code snippet to review. Max 14,000 characters â\x80\x94 if your diff is larger, split it by file or hunk and review each part separately. Example: the output of `git diff HEAD~1`.'}, 'async': {'type': 'boolean', 'default': False, 'description': 'When true, return {queryId, status:"running"} immediately and fetch the finished review with council_result. Use when your MCP client enforces a fixed tool-call timeout, or with 4+ reviewers â\x80\x94 async runs also give slow reasoning models a much larger time budget before they are cut off.'}, 'focus': {'enum': ['bugs', 'security', 'performance', 'architecture', 'all'], 'type': 'string', 'default': 'all', 'description': 'Review focus: "bugs" (correctness), "security", "performance", "architecture", or "all" (default â\x80\x94 full review, bugs prioritized).'}, 'models': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 10, 'minItems': 2, 'description': "Model IDs to include as reviewers (2-10). Defaults to the user's preferred council. Use council_models to list available IDs."}, 'context': {'type': 'string', 'maxLength': 3000, 'description': 'What the change is supposed to do: intent, constraints, related files or invariants reviewers cannot see from the diff alone. Improves signal, reduces false positives.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['focus'], 'properties': {'focus': {'enum': ['bugs', 'security', 'performance', 'architecture', 'all'], 'type': 'string', 'description': 'The review focus this synthesis was produced under.'}, 'errors': {'type': 'array', 'items': {'type': 'object', 'required': ['modelId', 'message'], 'properties': {'message': {'type': 'string'}, 'modelId': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Per-reviewer failures, if any.'}, 'status': {'enum': ['running', 'complete', 'failed'], 'type': 'string', 'description': 'Only present on async reviews: "running" means poll council_result with the queryId.'}, 'queryId': {'type': 'string', 'description': 'Server-side ID of this review query. With async=true, pass it to council_result.'}, 'synthesis': {'type': 'string', 'description': 'Verdict-first moderator synthesis: ## Council Verdict (SHIP/NO-SHIP), ## Confirmed Findings (2+ reviewers agree), ## Dissents, ## Reviewer Verdicts. Absent while an async review is still running.'}, 'modelMapping': {'type': 'object', 'description': 'Anonymous reviewer label (M1..Mn) to model name mapping â\x80\x94 how dissents are attributed.', 'additionalProperties': {'type': 'string'}}, 'consensusScore': {'type': ['number', 'null'], 'description': 'Cross-reviewer agreement score on the 0-100 scale. Absent while an async review is still running.'}, 'perModelResponses': {'type': 'object', 'description': "Each reviewer model's raw independent review, keyed by model name. Absent while an async review is still running.", 'additionalProperties': {'type': 'string'}}}, 'additionalProperties': False}
council_usage
Council Usage
Return the user's current monthly cost-budget consumption (current spend, budget cap, percentage used, days until reset). Use to decide whether to warn the user before invoking another council_query, or to suggest using cheaper models. Per Council's rule: never show dollar amounts to the user in the response — use percentages.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'status': {'type': 'string', 'description': 'Budget status: ok, warning, or exceeded.'}, 'percentUsed': {'type': 'number', 'description': 'Percentage of the monthly budget consumed, 0-100+.'}, 'periodEndsAt': {'type': 'string', 'description': 'When the current monthly budget cycle resets, ISO 8601.'}}, 'additionalProperties': False}
library_delete
Library Delete
Permanently delete a document from the user's Council RAG library — the record, every indexed chunk, AND the stored file are removed. This cannot be undone; re-adding the document requires uploading it again. Get document IDs from library_list. Use when the user asks to remove a document or when the 200-document library cap blocks an upload. Confirm with the user before deleting anything they did not explicitly name. No model call, no budget consumption.
可能执行破坏性操作
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['documentId'], 'properties': {'documentId': {'type': 'string', 'minLength': 1, 'description': 'ID of the document to delete, as returned by library_list or library_upload.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['success', 'deletedChunks'], 'properties': {'success': {'type': 'boolean', 'description': 'True when the document and all its data were removed.'}, 'deletedChunks': {'type': 'number', 'description': 'Number of indexed chunks that were deleted along with the document.'}}, 'additionalProperties': False}
library_list
Library List
List the documents in the user's Council RAG library. Returns id, filename, source type, ingestion status, chunk count, and upload date for each document. No retrieval, no budget consumption.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['documents'], 'properties': {'documents': {'type': 'array', 'items': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Document ID.'}, 'status': {'type': ['string', 'null'], 'description': 'Ingestion status, e.g. ready or processing.'}, 'filename': {'type': ['string', 'null'], 'description': 'Original filename as uploaded.'}, 'createdAt': {'type': ['string', 'null'], 'description': 'Upload timestamp, ISO 8601.'}, 'projectId': {'type': ['string', 'null'], 'description': 'Project workspace the document belongs to, if any.'}, 'sizeBytes': {'type': ['number', 'null'], 'description': 'File size in bytes.'}, 'chunkCount': {'type': ['number', 'null'], 'description': 'Number of indexed chunks.'}, 'sourceType': {'type': ['string', 'null'], 'description': 'Source type, e.g. pdf or docx.'}}, 'additionalProperties': False}, 'description': "Every document in the user's library, newest first. Empty when the library has no documents."}}, 'additionalProperties': False}
library_search
Library Search
Semantic search over the user's Council RAG library (uploaded PDFs, Word docs, contracts, research papers, codebases). Returns top-K chunks with source filename and page number. No model call, no budget consumption. Use to find direct quotes, check what the library contains, or scope a follow-up council_query_with_rag call.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'limit': {'type': 'number', 'maximum': 20, 'minimum': 1, 'description': 'Number of chunks to return, 1-20. Default: 8.'}, 'query': {'type': 'string', 'maxLength': 2000, 'minLength': 1, 'description': 'Semantic retrieval query â\x80\x94 describe the content you want, not keywords. Example: "termination and notice-period clauses in the vendor agreement"'}, 'project_id': {'type': 'string', 'description': 'Restrict retrieval to a specific Council project workspace ID. Omit to search the whole library.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['hits'], 'properties': {'hits': {'type': 'array', 'items': {'type': 'object', 'properties': {'chunkId': {'type': 'string', 'description': 'ID of the matched chunk.'}, 'content': {'type': 'string', 'description': 'The matched passage text.'}, 'distance': {'type': 'number', 'description': 'Vector distance â\x80\x94 lower is more relevant.'}, 'filename': {'type': 'string', 'description': 'Source document filename.'}, 'documentId': {'type': 'string', 'description': 'ID of the parent document.'}, 'pageNumber': {'type': ['number', 'null'], 'description': 'Page number in the source document, when known.'}}, 'additionalProperties': False}, 'description': 'Top-K matching chunks, most relevant first. Empty when nothing matches.'}}, 'additionalProperties': False}
library_upload
Library Upload
Upload a document into the user's Council RAG library so future council_query_with_rag and library_search calls can retrieve it. Accepts PDF, Word (docx), text, and markdown files as base64 — images are not supported. Max 10MB per file via MCP (the web library at https://council-ai.app/settings?tab=library takes up to 50MB); libraries hold up to 200 documents. Ingestion (chunking + embedding) runs in the background: the returned document starts in "pending" status — check library_list for it to reach "ready" before querying against it. No model call, no budget consumption.
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['filename', 'contentBase64'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Free-form tags to attach to the document, e.g. ["contracts", "2026"].'}, 'filename': {'type': 'string', 'maxLength': 512, 'minLength': 1, 'description': 'Original filename including extension â\x80\x94 the extension drives type detection. Example: "vendor-contract-2026.pdf".'}, 'mimeType': {'type': 'string', 'maxLength': 255, 'description': 'MIME type, e.g. "application/pdf". Optional â\x80\x94 the backend verifies the real type from the file\'s magic bytes regardless.'}, 'projectId': {'type': 'string', 'description': 'Council project workspace to file the document under. Omit for the general library.'}, 'contentBase64': {'type': 'string', 'minLength': 1, 'description': "The file's raw bytes, base64-encoded (standard alphabet, no data: URI prefix). For a plain-text or markdown document, base64-encode the UTF-8 text."}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['document'], 'properties': {'document': {'type': 'object', 'required': ['id', 'filename', 'status', 'sizeBytes'], 'properties': {'id': {'type': 'string', 'description': 'Document ID â\x80\x94 use with library_delete or to track ingestion.'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Tags as stored.'}, 'status': {'type': 'string', 'description': 'Ingestion status. Starts "pending"; becomes "ready" when queryable, or "failed" with errorMessage.'}, 'filename': {'type': 'string', 'description': 'Sanitized filename as stored.'}, 'mimeType': {'type': 'string', 'description': 'Verified MIME type.'}, 'createdAt': {'type': 'string', 'description': 'Upload timestamp, ISO 8601.'}, 'projectId': {'type': ['string', 'null'], 'description': 'Project workspace, when set.'}, 'sizeBytes': {'type': 'number', 'description': 'Stored file size in bytes.'}, 'sourceType': {'type': 'string', 'description': 'Detected source type, e.g. pdf or docx.'}}, 'description': 'The created document record, in "pending" status until background ingestion completes.', 'additionalProperties': False}}, 'additionalProperties': False}
已添加
council_usage
2026年9月17日 12:45
已添加
council_models
2026年9月17日 12:45
已添加
library_delete
2026年9月17日 12:45
已添加
library_upload
2026年9月17日 12:45
已添加
library_list
2026年9月17日 12:45
已添加
library_search
2026年9月17日 12:45
已添加
council_review
2026年9月17日 12:45
已添加
council_query_with_rag
2026年9月17日 12:45
已添加
council_result
2026年9月17日 12:45
已添加
council_query
2026年9月17日 12:45

Andreax

io.github.moralito311-andr/andreax

Offers pay-per-call AI services for inference, agent and workflow design, OCR and transcription, code generation and review, clas…

GPT55 Model Gateway

xyz.558686.gpt55/token-gateway

Acts as a remote model gateway exposing GPT chat, coding and review services, lightweight text utilities, and prepaid or x402-bas…

GoCreative Agent API

io.github.ColinHughes2121/gocreative-agent-api

Offers pay-per-call LLM completions and data services for company intelligence, KYB, sanctions screening, threat intelligence, co…

IA-QA — 130+ QA & Dev Tools for AI Agents

io.github.JcJamet/ia-qa-toolbox

Provides deterministic QA, evaluation, testing, code analysis, prompt and RAG checks, model comparison, and web security diagnost…

Speedbot Autonomous Work Network

io.github.ulasarslan6262-ui/speedbot

Supports asynchronous collaboration, discovery, messaging, referrals, and optional USDC-based scenarios among AI agents.

H/M Blindspot Challenge Platform

net.hogarmas/blindspot

Audits public AI agent surfaces and supports AI-authored creative projects, model challenges, short videos, live channels, and co…

NOT FOR HUMANS

io.github.notforhumansfun-rgb/not-for-humans

Provides NFT ownership and marketplace status, wallet-based agent identity and claims, public agent learning records, and multipl…

Agent^Rider

io.github.ceedot-rock/agent-rider

Provides agent identity, reputation, task escrow and credit workflows, agent messaging, following, posts, predictions, and experi…