StartupKit
EN

Set up a VDP with an AI agent

Create a draft VDP in Kit, then configure and publish it with an AI agent through MCP tools.

Why It Matters

Setting up a vulnerability disclosure program means working through seven configuration sections, generating a security.txt, and publishing a public reporting portal. An AI agent can configure and publish an existing draft through Kit’s MCP tools: you describe what you want, the agent reads the schema, writes the config, and asks for your sign-off before anything goes live.

This is the build side of the CSIRT tooling. The AI Integration page covers the day-to-day triage tools (severity, duplicates, researcher responses). This page covers the tools for configuring and publishing a draft.

The agent can read program state, draft a configuration, and save it. Tool instructions tell it to obtain approval for publication, bounty amounts, and legal-text changes. How calls are approved depends on the AI client. These setup tools do not accept payment-card details.

For an external MCP client, first create a draft in Kit with an active Kit subscription and CSiRT admin access. Then connect or reconnect your client and grant CSiRT read & write access. CSiRT tools appear only after a program exists.

From Draft to Live

Start with csirt_get_setup_guide and follow its next_tool. csirt_create_program can also return the existing draft; it is optional in this workflow.

Step Tool What Happens
1. Orient csirt_get_setup_guide Reports current state, the config schema, recommended defaults, and the exact next_tool to call.
2. Confirm draft (optional) csirt_create_program Without parameters, returns the existing program without creating a duplicate. Requires CSiRT admin access and an active Kit subscription.
3. Configure csirt_configure_program Sets any subset of the seven config sections in one call. Repeat as needed.
4. Activate csirt_activate_program Publishes the public portal and starts accepting real reports. Tool instructions require user approval; the tool also checks for a configured scope and security.txt contact.

A typical conversation:

"Set up a vulnerability disclosure program for us. Scope is app.acme.com
 and api.acme.com, intake email [email protected]. No bounties yet."

The agent calls csirt_get_setup_guide, reads the existing draft, configures scope and the security.txt contact, then stops and asks you to confirm before going live.

Step 1: Orient with the Setup Guide

csirt_get_setup_guide is the entry point and the tool the agent returns to between steps. It returns status, report counts, SLA compliance, a config_checklist (each item annotated with the tool that fixes it), and the next tool to call.

Because the schema and defaults travel with the response, the agent can build a complete, valid configuration without guessing field names. The keys mirror csirt_get_program exactly, so the same shapes work for read, edit, and write-back.

Step 2: Confirm the Draft (Optional)

Called without parameters, csirt_create_program returns your existing program through an external MCP client. Supplying name or disclosure_policy updates those fields. It requires the csirt_write scope, CSiRT admin access, and an active Kit subscription.

Parameter Required Description
name No Updates the existing program name if supplied.
disclosure_policy No Updates the existing coordinated-disclosure policy text (markdown) if supplied.

It is idempotent: if a program already exists, the tool returns that one instead of creating a duplicate. The response includes the config_checklist and next_tool: "csirt_configure_program".

Note

Creating a program does not make it public. A draft program accepts no reports and is invisible to the public until you activate it, but you can preview it yourself at any time (see below).

Step 3: Configure the Program

csirt_configure_program sets any subset of the seven configuration sections in a single call. Keys and field shapes mirror csirt_get_program and csirt_get_setup_guide, so a read → edit → write-back round-trip is lossless.

Important

All monetary amounts are in cents. A $500 bounty is 50000. This applies to the bounty matrix and the minimum payout.

Section Key What It Sets
Scope scope_config in_scope_targets[], out_of_scope_categories[], excluded_vuln_types[]. Required before activation.
Bounty Matrix bounty_matrix_config tiers: [{severity, min_cents, max_cents}] for informational/low/medium/high/critical/super_critical.
SLAs sla_config acknowledgment_hours, resolution_targets {severity => hours}, breach_alert_repeats (0–20, default 3), breach_alert_interval_hours (6–720, default 6).
Triage triage_config default_assignee_id, escalation_severities[], dedup_enabled, require_retest, max_appeals, auto_assign_on_call.
Payouts disbursement_config supported_payment_methods[], require_tax_docs, require_agreement, min_payout_cents, currency.
Spam spam_config max_reports_per_window, window_seconds, block_duration_seconds.
security.txt security_txt_config contact_email (the public intake address, required before activation), expires_days, policy_url, acknowledgments_url, hiring_url, encryption_url.

You can call this tool as many times as you like while in Draft. The response reports which sections changed, whether the program is now activatable, any remaining activation_blockers, and the next tool.

For the full meaning of each field, see Configuring Your Program, which documents the same seven sections in the web UI.

Previewing the Draft Portal

You don’t have to activate to see the portal. Every setup tool returns a portal_preview_url: the portal rendered exactly as researchers will see it, with a preview banner. It works while the program is still in Draft:

  • Account members only. Open the link while signed in to Kit. If you’re signed out, the link sends you to the sign-in page and back; visitors who aren’t members of your account get a 404, so the draft stays invisible to the public.
  • Always on the Kit domain. A custom security domain (for example vdp.yourcompany.com) starts serving the portal only after activation; your Kit sign-in doesn’t carry over to your own domain, so the preview link always uses the kit URL.

Ask the agent “show me a preview of my VDP page” and it will hand you this link.

Step 4: Activate (Go Live)

csirt_activate_program takes the VDP live: it publishes the public reporting portal and starts accepting real researcher reports and SLA clocks.

The tool instruction tells the agent to explain publication and obtain your confirmation before calling it. This is an instruction to the agent, not a separate approval form enforced by Kit.

It also refuses to activate until two things are set:

  • Scope: at least one in-scope target (scope_config.in_scope_targets).
  • security.txt contact: an intake email (security_txt_config.contact_email).

If either is missing, the tool returns the specific blockers (plus the draft preview_url) and points the agent back to csirt_configure_program with the section to fix. Once live, the response includes the public portal_url: your custom security domain when one is configured, otherwise the Kit URL. You can later pause the program.

Automatic vs. Human-Confirmed

The agent prepares Review and approve Unavailable through these tools
Read program state and the config schema Activation (going live / publishing the portal) Capturing a payment card
Draft a full configuration from your intent Activation Subscription checkout
Write config sections (scope, SLAs, triage, spam, security.txt) Setting bounty $ amounts None
Read the draft setup checklist Editing safe-harbor / disclosure legal text None

Review the portal preview, bounty amounts, and policy before approving. In an external MCP client, also check the client’s tool-approval settings.

Quick Checklist

  • Create the first draft in Kit with an active Kit subscription and CSiRT admin access
  • If using an external MCP client, make sure the connection was granted Read & write on the CSiRT module on the consent screen; the setup tools are write tools
  • Ask the agent to “set up a VDP”; it starts with csirt_get_setup_guide
  • Confirm the program is still in Draft before publication
  • Provide scope (in-scope targets) and an intake email for security.txt
  • Review the bounty matrix amounts before approving (amounts are in cents)
  • Give an explicit “yes” before the agent calls csirt_activate_program
  • Verify the public portal_url returned after activation

Next Steps

Type to search...