← Back to all actions

PUBLIC ACCESS

Build with
action.

Read published directory data as JSON or connect an AI client to the read-only MCP server. No account or API key is required.

JSON API

Add .json

Add .json to any canonical action, issue, or organization page URL. Responses use application/json and only expose published directory records.

GET
/action/:issueSlug/:actionSlug.json

Returns one published action, including its issue and organization.

GET
/issue/:issueSlug.json

Returns an issue and its 20 most recently created published actions.

GET
/org/:organizationSlug.json

Returns an organization and its 20 most recently created published actions.

Example

curl https://forceagainstsomething.com/issue/criminal-justice.json

For local development, use http://localhost:3000 as the base URL. Missing or unpublished records return a JSON response with a 404 status.

MODEL CONTEXT PROTOCOL

Connect
with MCP

The MCP server gives compatible AI clients structured, read-only tools for finding civic actions. It uses Streamable HTTP and does not require authentication.

REMOTE MCP URLhttps://forceagainstsomething.com/mcpLOCAL MCP URLhttp://localhost:3000/mcp

Client configuration

In a client that supports remote MCP servers, add a server named force-against-something with the remote URL above. Clients that accept JSON configuration commonly use this shape:

{
  "mcpServers": {
    "force-against-something": {
      "url": "https://forceagainstsomething.com/mcp"
    }
  }
}

MCP configuration formats vary by client. If yours provides an “Add remote server” form, enter the server name and URL directly instead.

Available tools

list_directory

List issues and published actions. Accepts an optional issueSlug and a limit from 1–100.

search_directory

Search published actions and organizations with a query from 2–80 characters.

get_action

Get one published action by numeric id.

get_issue

Get one issue by slug, with an optional action limit from 1–100.

get_organization

Get one organization by numeric id, with an optional action limit from 1–100.

OPEN SOURCE

Source
Code

The source code for Force Against Something is available on GitHub. Browse the implementation, report an issue, or run your own local copy.

VIEW ON GITHUB

Run it locally

  1. Clone the repository
    git clone https://github.com/headzoo/forceagainstsomething.git
    cd forceagainstsomething
  2. Install dependencies

    Use Node.js 22.13 or newer.

    npm install
  3. Configure the environment

    Copy the example file to .env.local, then add your PostgreSQL connection and the other required settings documented in that file.

    cp .env.example .env.local
  4. Prepare and start the site
    npm run db:migrate
    npm run dev

    Open http://localhost:3000 once the development server is ready.