mcpField
P
Plain Ballot

Plain Ballot

远程服务
plainballot.com法律与政务01 天前更新

关于 Plain Ballot

Plain Ballot 是供选民按关注议题比较候选人的选举指南。它根据美国地址匹配选票,并展示带可核查引文和来源的候选人立场;匹配使用确定性算术,而非 AI。

主要功能

  1. 01按地址查询选票
  2. 02设置议题优先级并计算候选人匹配度
  3. 03提供精确引文及来源链接
  4. 04按需显示政党标签
  5. 05公开纠错和开放选举数据

适用场景

  1. 01比较候选人在所选议题上的立场
  2. 02核查候选人立场的来源
  3. 03在 Agent 或其他产品中使用选举研究数据

MCP 相关

其远程 MCP 服务提供只读工具,用于列出议题、按地址获取含引文和来源的选票,以及根据明确表达的优先级计算匹配度。它要求 Agent 不推断缺失立场,并且不存储地址。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://plainballot.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

Plain Ballot

选票上的每场选举,都与你关心的议题相匹配。每个立场都有可供核查的引文作为依据。

plainballot.com · 工作原理 · 开放数据 · 参与贡献

CI License: AGPL-3.0 GitHub stars

Plain Ballot

谁在参选,他们的立场是什么?选出你关心的议题,为每个议题设置倾向,然后输入地址。Plain Ballot 会查看你的选票,告诉你哪些候选人与你契合、原因是什么,以及依据来自哪里。在你主动查看前,政党标签都会隐藏。没有广告、无需账号,也不会存储你的地址。

覆盖加州的所有选举,以及美国 50 个州的众议院和参议院选举,适用于 2026 年 11 月 3 日。

两个项目,均免费且开源:

  • Plain Ballot(本仓库):选民指南。
  • Open Election Data:背后的研究数据。每位候选人都针对相同的 18 个议题进行研究,每个立场都附有准确引文及其来源,由必须达成一致的 AI Agent 研究。采用开放数据库许可证,免费使用,包括商业用途,并提供免费 API。

必须展示依据的 AI

聊天机器人会把投票信息弄错。Plain Ballot 的设计原则是,任何单个模型的说法都不会直接传达给选民。

  • Agent 必须达成一致。 每位候选人都由使用不同模型(Claude Code、Codex、GPT-5.6 Luna)的独立 Agent 进行研究,每个 Agent 都会独立搜索和阅读。只有达成一致时才会发布某个立场:没有冲突时,3 个 Agent 中至少 2 个同意;若存在分歧,则须在 10 个 Agent 中形成明确多数。
  • 每条引文都经过核实。 每项主张都附有准确引文,系统会从其来源获取引文并逐字核对,否则就会将其舍弃。每晚都会重新核查所有已发布的引文。
  • 不猜测。 Agent 找不到来源,绝不算作一票。若未形成多数,该议题就会留空,选票也会明确说明。
  • 匹配不是 AI。 匹配是在浏览器中进行的简单、确定性运算(lib/match.ts)。相同的答案和选票,每次都会得到相同结果。
  • 选民可以提出异议。 对任何主张点击“有误?”,即可提交公开问题,并由新的 Agent 重新开展研究。所有更正都会公开。
  • 每项更改都会经过偏见检查。 来自不同公司的 3 个模型会审查每个拉取请求,检查诱导性措辞和片面逻辑;测试还会确保匹配对每个倾向刻度的两端一视同仁。
  • 所有内容都公开。 倾向刻度的措辞、一致性规则以及每项研究所得的立场都存放在 Open Election Data 中;匹配功能则存放在此处。

使用数据

研究数据属于独立项目:Open Election Data。该项目提供免费的静态 API,无需密钥:

curl -s https://n8peace.github.io/open-election-data/v1/divisions/ca/cd-10.json

你可以在任何用途(包括商业产品)中使用这些数据,但须遵守开放数据库许可证:注明来源,并以相同条款分享对数据所做的改进。

向你的 Agent 发送请求

Plain Ballot 无需浏览器即可运行。将任何支持 MCP 的 AI Agent(Claude、ChatGPT、Cursor 等)指向:

https://plainballot.com/mcp

它提供三个只读工具:

  • list_issues:列出 18 个议题,以及各方的表述方式。
  • get_ballot:查询街道地址对应的所有已研究选举,每个选项的立场、原文引述和来源。
  • score_fit:根据选民给出的优先事项,计算各选项与之匹配的程度,使用与网站相同的算法。不涉及模型。

Agent 会遵循与网站相同的规则:保持非党派立场、引用并链接来源、绝不补全缺失的立场,只根据选民明确陈述的优先事项评分。地址不会被存储。

更喜欢纯 JSON?GET https://plainballot.com/api/ballot?address=... 会返回相同的选票;研究数据本身也是一个免费静态 API。

已有哪些资源,以及我们为何仍要创建这个项目

优质来源已经不少,Plain Ballot 也从中汲取信息:

  • Ballotpedia 是最完整的参选者记录,研究 Agent 会查阅它。其批量数据是付费产品,网页内容也不能由我们重新发布。
  • BallotReady 通过面向组织的付费 API 提供候选人的议题立场。
  • Vote Smart 通过候选人填写的 Political Courage Test 调查收集立场,同时还收集投票记录和评级。
  • Google Civic 和 Democracy Works 提供选票上的参选者信息和投票方式。

我们找不到的是这样一个免费的开放数据集:记录候选人的立场,为每个立场附上可核查的引文,让所有候选人都围绕相同议题呈现以便比较,并且任何人都可以免费复用。因此,我们创建了一个:Open Election Data。每条主张仍然都来自候选人本人的话:Agent 会从摘要追溯到候选人网站、投票记录或采访,并引用原文。

研究你所在的州

研究工作使用你自己的 Claude 或 ChatGPT 方案运行,因此任何人都可以添加覆盖内容,无需支付 API 积分。研究在 Open Election Data 中进行,其中每个州都有一个开放的“研究你所在的州”议题。

在本地运行

npm install
cp .env.example .env.local
npm run dev                        # http://localhost:3000

没有密钥时,程序会使用虚构的样例选票运行,调节控件也仍然可用。已研究的选举数据来自开放数据的 API(将 ELECTION_DATA_DIR 设为本地检出副本中的 data/positions 即可离线使用)。配置密钥后,可启用文字输入的优先事项(AI_GATEWAY_API_KEY)、真实选票查询(GOOGLE_CIVIC_API_KEY)和地址建议(GOOGLE_PLACES_API_KEY)。

npm test               # matching, neutrality, sharing, abuse limits
npm run eval           # does the AI put people on the right side of each dial? (calls the model)
npm run check:issues   # dial wording matches the research data

构建方式

基于 Vercel 上的 Next.js。人口普查地理编码器用于查找选民所在选区。已研究的选举数据来自 Open Election Data API,并按选区与选民匹配。BotID、速率限制和支出上限用于保护付费端点(docs/security.md)。完整架构图见:docs/ARCHITECTURE.md。使用 AI Agent 编码?将它指向 AGENTS.md。

贡献

最有帮助的是开展研究和核查研究,这两项都不需要编写代码。请参阅 CONTRIBUTING.md,或在浏览器中打开一个可直接运行的副本:

在 GitHub Codespaces 中打开

许可证

AGPL-3.0。任何人都可以运行自己的副本,但托管的副本必须公开其修改内容,因此没人能悄悄运行有偏见的版本。

Star 历史

Star 历史

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。