Enable agentic work

Open your properties to create an agent token

Choose a product workspace to reach the token tools, then create a newly scoped owner token. The token belongs to your owner account—not only that property—so protect it in the agent's server-side secret manager. Its secret is shown only once.

Choose a property and create an agent token

Public board reads

GET /api/v1/boards/{board-slug} returns an activated board's public name, owner name, and public request summaries. It is CORS-enabled and needs no secret.

const response = await fetch(
  "https://votewant.com/api/v1/boards/acme-feedback",
);
const board = await response.json();

Private, depublished, or otherwise non-public boards return 404. The API uses the same publication rules as VoteWant's rendered board pages.

TypeScript client

The read-only typed client is maintained in the public VoteWant client repository as @growwsoft/votewant-client. It never accepts owner credentials or writes to boards. Registry publication remains a separate release gate; the REST endpoint is always available.

Owner automation

Tokens are never safe in a browser, app bundle, or game client. Create a scoped, revocable token from a property workspace and keep it only in your server-side secret manager. Owner tokens can create private properties and let an authorized server-side agent submit requests to an owned board; setup progression and activation remain separately gated.

Submit requests with an owner agent

Give a newly created scoped token to a coding or product-management agent through its secret manager. Existing tokens keep the scopes they were issued with, so they are never silently upgraded. Every write requires an Idempotency-Key, records agent_on_behalf_of_human provenance, and can preserve a source channel, external ID, and HTTPS URL.

const response = await fetch(
  "https://votewant.com/api/v1/boards/acme-feedback/requests",
  {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.VOTEWANT_OWNER_TOKEN}`,
      "Content-Type": "application/json",
      "Idempotency-Key": "reddit-comment-oz2388k",
    },
    body: JSON.stringify({
      type: "request",
      title: "Handle duplicate requests submitted through the API",
      body: "Give owners idempotency, duplicate detection, and source provenance.",
      source: {
        channel: "reddit",
        externalId: "oz2388k",
        url: "https://www.reddit.com/r/example/comments/thread/oz2388k/",
      },
    }),
  },
);
const result = await response.json();

Duplicate suggestions use VoteWant's local lexical scorer, so ordinary ingestion adds no model or embedding bill. The response returns likely matches for owner review; VoteWant never auto-merges customer evidence or lets an agent decide what ships.

The scorer lowercases the title and body, removes common filler words, compares shared tokens, gives strong title overlap extra weight, and returns at most three matches above its similarity threshold. It catches inexpensive lexical overlap, not every semantic paraphrase.

Duplicate suggestions are advisory. An owner can merge a duplicate into the canonical request while preserving evidence. Reusing the same idempotency key returns the original write; reusing it with different content fails loudly.

The active property dashboard presents the same candidates beside each request. An agent may organize and summarize the queue, but merge, moderation, and roadmap decisions remain explicit owner actions.

For product-management reads, send the same token to POST /api/owner/mcp?organizationId={organization-id}. Start with the standard MCP tools/list method; available tools include request search, request detail, trends, and top requests. Unknown methods and tools return the /api/v1/help discovery link.

Choose a property and manage its board