Skip to content

Use Apply2Volunteer from an AI assistant

Preview or grade a blank volunteer form with no API key. Organization tools use an a2v_ API key. The server is a remote MCP endpoint, and the same product is an OpenAPI document.

Updated 14 Oct 2026

Start a free trial API docs

Ask your AI assistant

You do not need to install anything. Pick the assistant you already use. The link opens the assistant with a prefilled question. The question asks the assistant to explain Apply2Volunteer and direct you to the page where you upload your PDF.

What an assistant can do

Anonymous tools need no API key and do not call a model. Workers AI stays off. preview_volunteer_form, get_preview, and grade_form are the anonymous tools.

Anonymous grades share the Form Grader limit of 5 per network per day and the daily anonymous MCP cap. preview_volunteer_form counts toward that same cap. get_preview does not.

ToolTitleKeyWhat you get
preview_volunteer_formPreview a volunteer formNo keySend exactly one of url, text, or template (volunteer-application-form or volunteer-interest-form). structuredContent includes previewUrl (/tools/p/{token}), claimUrl, signUpUrl, and expiresAt. claimUrl and signUpUrl are the same sign-up link. The parsed form is stored for 24 hours.
get_previewRead a form previewNo keystructuredContent includes the title, fields, stages, expiresAt, and previewUrl for a previewId.
grade_formGrade a volunteer formNo keystructuredContent includes score, grade, fixes, and reportUrl (/tools/r/{id}) when a public report is stored. If a key is sent, it must include forms:read.

Organization tools need an org API key, or an OAuth sign-in from ChatGPT or Claude. Scopes in use are forms:read, forms:write, applications:read, and applications:write. forms:write does not include forms:read.

Start a free trial to create an org API key for these tools.

ToolTitleKeyWhat you get
convert_pdf_previewConvert a PDF for the organizationforms:readStores a preview for the authenticated organization.
list_formsList formsforms:readLists forms that belong to the authenticated organization.
get_formGet a formforms:readGets one form by id when it belongs to the authenticated organization.
list_applicationsList applicationsapplications:readLists applications for one form in the authenticated organization.
get_applicationGet an applicationapplications:readGets one application by id when it belongs to the authenticated organization.
update_application_statusUpdate an application statusapplications:writeSets an application status. A decline requires a decline reason.
create_form_from_pdfSave a draft from a PDFforms:writeSaves a draft and returns formId and editorUrl (/app/forms/{formId}). Does not publish the form.
create_formCreate a blank draft formforms:writeCreates a blank draft (First name and Email, or optional template volunteer-application-form or volunteer-interest-form) and returns formId and editorUrl (/app/forms/{formId}). Does not publish the form.
update_formUpdate a draft formforms:writeUpdates a draft in the authenticated organization: title, settings, existing fields (including order), and add or remove fields. Returns editorUrl (/app/forms/{formId}) and any new field ids.
discard_formDiscard an open draftforms:writeDiscards the open draft of a form in the authenticated organization. The published form stays. A form with no open draft is not discarded.
publish_formPublish a formforms:writePublishes a draft in the authenticated organization. structuredContent includes formId, status, publicUrl, the embed URL, and the embed snippet.
claim_previewSave a preview as a draftforms:writeSaves an unexpired preview as a draft. structuredContent includes formId and editorUrl (/app/forms/{formId}).

MCP server

The endpoint is https://applytovolunteer.com/mcp. It is a remote Streamable HTTP server. Any MCP client that supports remote Streamable HTTP servers can use that URL.

A JSON-RPC batch that mixes an anonymous tool with an organization tool and sends no valid credentials (none, an invalid or expired token, or a key without Bearer) returns 401 with a WWW-Authenticate challenge for the whole batch.

This server is listed in the official MCP Registry as com.applytovolunteer/apply2volunteer.

The server card is https://applytovolunteer.com/.well-known/mcp/server-card.json. Its tool list matches tools/list, including each tool's outputSchema. Its prompt list matches prompts/list. Its resource list matches resources/list.

A successful tools/call returns structuredContent that matches that outputSchema, and the same result as text for older clients. A failed call sets isError and leaves structuredContent off.

Prompts

Claude, ChatGPT, and other MCP hosts can show these as slash commands. prompts/list and prompts/get need no API key and do not call a model. Workers AI stays off. Each prompt tells the assistant which tools this server already exposes to call.

  • convert_volunteer_form: Turn a blank volunteer form into a preview. Sign up free from the claim link, or claim and publish it when you are already signed in.
  • grade_volunteer_form: Grade a blank volunteer form, show the top fixes, and offer to convert it.
  • review_new_applications: List applications for a form and summarize the new ones. Does not change a status unless you explicitly say yes.

Do not call update_application_status, and do not change an application status, unless the user explicitly says yes to that change.

If the user is not signed in, say that OAuth sign-in or an org API key is needed and do not call that tool.

Resources

Claude, ChatGPT, and other MCP hosts can read these without an API key. resources/list and resources/read do not call a model. Workers AI stays off. The catalog is fixed and public. It has no applicant data and no API keys.

Read-only inline result for preview_volunteer_form, get_preview, grade_form, create_form, create_form_from_pdf, convert_pdf_preview, publish_form, and claim_preview. Open buttons use utm_source=mcp-app. Hosts without MCP Apps still get the text result and structuredContent.

  • a2v://getting-started: How to call preview_volunteer_form or grade_form with no API key, then open claimUrl or signUpUrl.
  • a2v://templates/volunteer-application-form: Blank volunteer application fields, with the public template URL. Contact details first. References and consents later.
  • a2v://templates/volunteer-interest-form: Blank volunteer interest fields, with the public template URL. Name, email, phone, interests, and availability.
  • a2v://tool-map: Anonymous tool names and the claim and publish path. No secrets.
  • ui://applytovolunteer/form-preview.html: Read-only inline result for preview_volunteer_form, get_preview, grade_form, create_form, create_form_from_pdf, convert_pdf_preview, publish_form, and claim_preview. Open buttons use utm_source=mcp-app.

Remote MCP config

A client that takes a JSON block of remote servers can use this. The url is the MCP endpoint. Leave the key off to call the anonymous tools.

{
  "mcpServers": {
    "apply2volunteer": {
      "url": "https://applytovolunteer.com/mcp"
    }
  }
}

Cursor's MCP docs show a remote server as a url in mcp.json, with an optional headers object.

Claude Code's MCP docs say HTTP is the remote transport. In that client's JSON, set type to http. streamable-http is an alias for http there. Their docs say an entry with url and no type is skipped. The block is under Claude Code.

This server reads an org API key from Authorization: Bearer a2v_.... Add that header only for organization tools, and only when the client lets you set a request header.

{
  "headers": {
    "Authorization": "Bearer a2v_..."
  }
}

ChatGPT and Claude sign in with OAuth. The steps are under Connect in ChatGPT and Connect in Claude. An org API key still works when the client can set a request header. Clients connect by calling the Streamable HTTP URL.

Add to your assistant

Anonymous tools need no API key. Leave the key header off. Organization tools accept OAuth sign-in, or Authorization: Bearer a2v_... when the client has a place to set a request header.

Connect in Claude

  1. Open Customize, then Connectors, then Add custom connector.
  2. Name it Apply2Volunteer. Set the MCP server URL to https://applytovolunteer.com/mcp.
  3. Choose sign-in. Claude registers a client and opens Apply2Volunteer.
  4. Enter your email. Apply2Volunteer sends a magic link. A new account gets a free organization.
  5. On the consent screen, read the client name and the scopes, then allow. Claude returns with organization tools.

No sign-in still reaches only the anonymous tools.

Connect in ChatGPT

  1. Open ChatGPT Plugins, then Add custom MCP server.
  2. Enter a name. Set the Server URL to https://applytovolunteer.com/mcp.
  3. Choose OAuth (sign-in). ChatGPT registers a client and opens Apply2Volunteer.
  4. Enter your email. Apply2Volunteer sends a magic link. A new account gets a free organization.
  5. On the consent screen, read the client name and the scopes, then allow. Choose No authentication only when you want the anonymous tools and nothing else.

Claude

Add a custom connector. On Free, Pro, and Max: Customize, then Connectors, then Add custom connector. The Free plan can add one custom connector. On Team plans, Owners and Primary Owners add it. On Enterprise plans, Owners, Primary Owners, and people with a custom role that includes Manage access to Libraries can add it. Add it under Organization settings, then Connectors, then Add, then Custom, then Web. Name it Apply2Volunteer. MCP server URL: https://applytovolunteer.com/mcp. Choose No sign-in for the anonymous tools.

Request headers are in beta. If the dialog shows Request headers, organization tools can use header name authorization and the value Bearer a2v_..., including the word Bearer and the space. Claude sends that value as entered. If Request headers is not shown, that organization cannot send the key, and only the anonymous tools are available.

Claude's custom connector docs describe the URL, No sign-in, and request headers.

ChatGPT

Custom MCP server: open ChatGPT Plugins, choose the plus button, then Add custom MCP server. Enter a name. Under Connection, set the Server URL to https://applytovolunteer.com/mcp. OpenAI's custom MCP server guide lists the authentication options as OAuth, No authentication, and OAuth or no authentication. Choose OAuth to sign in. A new account gets a free organization, then a consent screen names the client and the scopes. Choose No authentication for the anonymous tools only. That guide does not document a bearer API key header. After the risk warning, choose Create as a plugin.

Developer mode is a separate path for workspace apps. OpenAI's developer mode article says full MCP support, including write actions, is in beta for Business, Enterprise, and Edu on the web. A Business admin turns it on from Workspace settings, then Apps, then Create. An Enterprise or Edu admin turns it on from Settings, then Apps, then Advanced settings, or from Workspace settings, then Apps, then Create. The article says a Pro account still turns developer mode on to use a custom app, and can connect an MCP server that uses read and fetch tools. The create screen asks for the MCP endpoint and an authentication choice. It does not document a bearer API key header.

GPT Actions use the OpenAPI document. In the GPT editor, open Actions, then Create new action, and import https://applytovolunteer.com/openapi.json. Authentication there is None, API key, or OAuth. API key can be Basic, Bearer, or a custom header. For organization tools, choose API key and Bearer. The key is a2v_.... Anonymous calls can use None. This server does not implement OAuth. OpenAI's actions article says custom GPTs are planned to retire. For affected Enterprise workspaces that date is 11 Dec 2026, and existing GPTs stay usable until then.

Cursor

Put this in .cursor/mcp.json in a project, or in ~/.cursor/mcp.json for every project. Anonymous tools:

{
  "mcpServers": {
    "apply2volunteer": {
      "url": "https://applytovolunteer.com/mcp"
    }
  }
}

Organization tools add headers. Cursor resolves ${env:A2V_API_KEY} from the environment. The value must include the word Bearer and the space:

{
  "mcpServers": {
    "apply2volunteer": {
      "url": "https://applytovolunteer.com/mcp",
      "headers": {
        "Authorization": "Bearer ${env:A2V_API_KEY}"
      }
    }
  }
}

Install in Cursor adds the anonymous server. The link is cursor://anysphere.cursor-deeplink/mcp/install with name and a base64 config. The config is {"url":"https://applytovolunteer.com/mcp"}. Cursor's install-link docs encode that server object, and the server name is the name query parameter. The link does not include an API key. Add the header in mcp.json for organization tools.

Grok

Custom connector: open grok.com/connectors. Click New Connector, then select Custom. Enter the MCP server URL https://applytovolunteer.com/mcp. Anonymous tools need no API key. xAI's connector docs say to enter that URL and complete any required authentication. They do not name a request header or an API key field, so this page does not show a way to send an org API key on that connector.

For Grok Business and Enterprise, a team admin provisions the connector in the cloud console before members can use it. xAI's connector management docs say to click + Add Connector, select Other, and enter the MCP server URL, then complete any required authentication. Those steps also do not name a header field.

The xAI API calls this server as a remote MCP tool. xAI's remote MCP docs require server_url and server_label. That page accepts a Streaming HTTP or SSE server URL. Use https://applytovolunteer.com/mcp. Leave authorization and headers off for the anonymous tools:

{
  "type": "mcp",
  "server_url": "https://applytovolunteer.com/mcp",
  "server_label": "apply2volunteer"
}

Organization tools set authorization to the a2v_... key. xAI's database-over-MCP recipe says that value reaches the server as Authorization: Bearer followed by the token. The value does not include the word Bearer. The remote MCP docs also list headers for additional request headers. The xAI SDK calls that parameter extra_headers. Those docs also list allowed_tools. Omit it and every tool this server exposes is injected. Set it to the read-only organization tools so this example cannot update a status, save a draft, claim a preview, or publish a form. The xAI SDK calls that parameter allowed_tool_names. list_applications and get_application in that list need the applications:read scope. A new key does not have applications:read. New keys default to forms:read and forms:write.

{
  "type": "mcp",
  "server_url": "https://applytovolunteer.com/mcp",
  "server_label": "apply2volunteer",
  "authorization": "a2v_...",
  "allowed_tools": [
    "list_forms",
    "get_form",
    "list_applications",
    "get_application"
  ]
}

Generic

A client that takes remote servers as mcpServers with a url can use this. Leave headers off for anonymous tools.

{
  "mcpServers": {
    "apply2volunteer": {
      "url": "https://applytovolunteer.com/mcp"
    }
  }
}

Where that client accepts headers, organization tools use Authorization with value Bearer a2v_....

{
  "mcpServers": {
    "apply2volunteer": {
      "url": "https://applytovolunteer.com/mcp",
      "headers": {
        "Authorization": "Bearer a2v_..."
      }
    }
  }
}

Connect from other clients

Anonymous tools need no API key. One-click links leave the key out. Where a client documents a header or a token field, the note names that field and the snippet omits it.

VS Code

Install in VS Code

Install in VS Code Insiders

VS Code's MCP extension guide describes the install link. The links do not include an API key.

Put this in .vscode/mcp.json. VS Code's MCP configuration reference uses servers, and remote HTTP needs type http plus url.

{
  "servers": {
    "apply2volunteer": {
      "type": "http",
      "url": "https://applytovolunteer.com/mcp"
    }
  }
}

Organization tools use headers and an input prompt so the key is not written into the file. The prompt value is the a2v_ key. The header value includes Bearer and the space. VS Code's reference says a server that uses an input variable is not forwarded to the session. The anonymous config has no input.

{
  "inputs": [
    {
      "type": "promptString",
      "id": "a2v-key",
      "description": "Apply2Volunteer API key",
      "password": true
    }
  ],
  "servers": {
    "apply2volunteer": {
      "type": "http",
      "url": "https://applytovolunteer.com/mcp",
      "headers": {
        "Authorization": "Bearer ${input:a2v-key}"
      }
    }
  }
}

GitHub Copilot

Install MCP server in VS Code

copilot mcp add --transport http apply2volunteer https://applytovolunteer.com/mcp

Put this in ~/.copilot/mcp-config.json. GitHub's Copilot CLI docs describe adding an MCP server. Those docs also describe headers. This anonymous config omits them. The install link does not include an API key.

{
  "mcpServers": {
    "apply2volunteer": {
      "type": "http",
      "url": "https://applytovolunteer.com/mcp",
      "tools": [
        "*"
      ]
    }
  }
}

Claude Code

claude mcp add --transport http apply2volunteer https://applytovolunteer.com/mcp

The optional flag is --header with value Authorization: Bearer a2v_.... The command leaves that flag off. Claude Code's MCP docs say HTTP is the remote transport.

{
  "mcpServers": {
    "apply2volunteer": {
      "type": "http",
      "url": "https://applytovolunteer.com/mcp"
    }
  }
}

Claude Desktop

Add a custom connector. On Free, Pro, and Max, open Customize, then Connectors, then Add custom connector. The Free plan can add one custom connector. On Team plans, Owners and Primary Owners add it. On Enterprise plans, Owners, Primary Owners, and people with a custom role that includes Manage access to Libraries can add it. Add it under Organization settings, then Connectors, then Add, then Custom, then Web. Name it Apply2Volunteer. Set the remote MCP server URL to https://applytovolunteer.com/mcp. Claude's Desktop connector article says this connector is available in Claude Desktop. Claude connects to that URL from Anthropic's servers.

Choose No sign-in for the anonymous tools. Choose Sign in now or Sign in when needed for organization tools. A new account gets a free organization, then a consent screen names the client and the scopes. Claude's custom connector docs describe those choices.

Request headers are in beta. If the dialog shows Request headers, organization tools can use header name authorization and the value Bearer a2v_.... Claude's custom connector docs say Claude sends that value as entered, including the word Bearer and the space. claude_desktop_config.json is the local server file. Claude's Desktop connector article calls that file a separate mechanism. This page does not put the remote URL in that file.

Codex

Put this in ~/.codex/config.toml. Codex's MCP docs describe the server table.

[mcp_servers.apply2volunteer]
url = "https://applytovolunteer.com/mcp"

bearer_token_env_var is the documented key field. OAuth is the default when no token is set. This block is the anonymous URL alone. The snippet does not set bearer_token_env_var.

Gemini CLI

gemini mcp add -s user --transport http apply2volunteer https://applytovolunteer.com/mcp

The command writes ~/.gemini/settings.json because -s user sets the scope. The default scope is project, which writes .gemini/settings.json in the current directory. Streamable HTTP uses httpUrl. headers is the documented key field. This anonymous config omits headers. Gemini CLI's MCP docs describe that field and the scope flag.

{
  "mcpServers": {
    "apply2volunteer": {
      "httpUrl": "https://applytovolunteer.com/mcp"
    }
  }
}

Unpaid tier and Google One users: Gemini CLI was replaced by Antigravity CLI on June 18, 2026. Google's announcement also stops Gemini CLI for Google AI Pro and Ultra on that date. Paid Gemini Code Assist Standard and Enterprise licenses, and paid Gemini API keys, keep Gemini CLI. Antigravity CLI stores MCP servers in a different file and uses serverUrl. Antigravity's Gemini CLI migration describes that file.

Windsurf Cascade

Cascade reads this file. On macOS and Linux the path is ~/.config/devin/mcp_config.json. When XDG_CONFIG_HOME is set, the path is $XDG_CONFIG_HOME/devin/mcp_config.json. On Windows the path is %APPDATA%\devin\mcp_config.json. You can open it from Cascade, then the MCP menu, then Open MCP config file. Windsurf's Cascade MCP docs give that path. ~/.codeium/windsurf/mcp_config.json is a legacy file. Cascade reads it only when discovery from other sources is on. Windsurf's editor discovery docs describe that setting.

{
  "mcpServers": {
    "apply2volunteer": {
      "serverUrl": "https://applytovolunteer.com/mcp"
    }
  }
}

The docs also accept url. This block uses serverUrl. headers is a documented map. A value can use the documented env interpolation ${env:VAR}. The snippet omits headers.

LM Studio

Install in LM Studio

The config is {"url":"..."} and is not wrapped in mcpServers. The link does not include an API key. LM Studio's deeplink docs describe that config.

Goose

Install in Goose

type is streamable_http. timeout is 300. The link does not include an API key. Goose's extension docs describe the install link.

JetBrains AI Assistant

Open Settings, then Tools, then AI Assistant, then Model Context Protocol, then Add. Paste this JSON. JetBrains' MCP docs use url for a remote Streamable HTTP server.

{
  "mcpServers": {
    "apply2volunteer": {
      "url": "https://applytovolunteer.com/mcp"
    }
  }
}

The url is the MCP endpoint. Those docs do not name a request header or an API key field, so this block does not send an org API key. Anonymous tools need no key. Settings, then Tools, then MCP Server is a different screen. It exposes the IDE as a server.

Zed

Open Settings, then AI, then MCP Servers. Choose Add Server, then Add Remote Server. Open the settings file with the zed: open settings file action. Zed's MCP docs put a remote server under context_servers.

{
  "context_servers": {
    "apply2volunteer": {
      "url": "https://applytovolunteer.com/mcp"
    }
  }
}

headers is the documented key field. Set Authorization to Bearer a2v_..., including the word Bearer and the space. This anonymous block omits headers. With no Authorization header, Zed starts the standard MCP OAuth sign-in.

Organization API keys

Organization tools need an org API key. Start a free trial first. Enter an email address and Apply2Volunteer sends a magic link. The first sign-in creates a free organization named My organization. An owner or admin then creates the key. Signing in does not create one by itself.

A key this server accepts is a secret that starts with a2v_. Send it as Authorization: Bearer a2v_.... The full secret is shown once.

Scopes are a comma-separated list on the key. forms:write does not include forms:read.

Agent card

The A2A agent card is https://applytovolunteer.com/.well-known/agent-card.json. Send JSON-RPC 1.0 to POST https://applytovolunteer.com/a2a. Streaming and push notifications are off. Anonymous skills are grade_form, preview_volunteer_form, and get_preview. No API key and no model call.

OpenAPI

The document is https://applytovolunteer.com/openapi.json. Human-readable docs are at /docs/api. Every operation has an operationId and a one-line summary.

The document includes request body schemas and which routes accept Authorization: Bearer a2v_....

OpenAI's GPT Actions guide says an action is an OpenAPI schema, and that operationId and summary tell the model which call to make. This server accepts the same Authorization: Bearer key described above. It does not implement OAuth.

Anonymous use goes through MCP (https://applytovolunteer.com/mcp) or A2A (https://applytovolunteer.com/a2a). No API key.

Other files an assistant can read: /llms.txt and /llms-full.txt.

Related

Get the paper off the kitchen table

Convert the form you already use

Upload your blank PDF or Word application and see it as an online form before you sign up. Your questions and wording stay as they are.

Convert a PDF to an online form

Start a free trial

Sign in with your email address to get your own workspace, where you publish forms and read the applications that come in. There's no card to enter.

Start a free trial