All docs
2 min read

Resources

Resources are read-only. Tools do things; resources describe things. The agent fetches them to ground its answers without mutating state.

Every resource: bearer-token auth, ability check, team-scoped.

Catalogue

URI template Ability Returns
formspring://team/forms forms:read All active forms in the team
formspring://forms/{public_id} forms:read Single form definition
formspring://forms/{public_id}/submissions/recent submissions:read Last 50 submissions
formspring://forms/{public_id}/stats submissions:read 30-day rollup
formspring://forms/{public_id}/insights insights:read AI insights payload
formspring://team/usage billing:read Current period counters
formspring://team/plan billing:read Plan key, features, limits
formspring://webhooks/{webhook_id} webhooks:read Single webhook config (no secret)
formspring://webhooks/{webhook_id}/deliveries/recent webhooks:read Last 50 deliveries

Sample shapes

formspring://team/forms

{
  "forms": [
    { "public_id": "r2EdO-orF-3S", "name": "Contact", "kind": "hosted", "published_at": "2026-04-12T08:00:00Z" }
  ]
}

formspring://forms/{public_id}/stats

{
  "window_days": 30,
  "received": 412,
  "spam": 87,
  "spam_ratio": 0.174,
  "average_ai_moderation_score": 12.3,
  "top_categories": [
    { "category": "support", "count": 188 }
  ]
}

formspring://forms/{public_id}/insights

If the team's plan doesn't include insights, returns { "locked": true, "reason": "plan_does_not_include_insights" }.

{
  "generated_at": "2026-05-07T03:00:00Z",
  "summary": "Most submissions are pricing questions from US visitors.",
  "themes": ["pricing", "integrations", "compliance"],
  "sentiment": { "positive": 0.62, "neutral": 0.31, "negative": 0.07 }
}

formspring://team/usage

{
  "period_start": "2026-05-01T00:00:00Z",
  "period_end": "2026-05-31T23:59:59Z",
  "submissions_used": 1842,
  "submissions_limit": 5000,
  "storage_bytes_used": 412000000,
  "webhook_deliveries_used": 1738
}

formspring://webhooks/{webhook_id}/deliveries/recent

{
  "deliveries": [
    { "id": "01HFY1A4X2", "status": "succeeded", "http_status": 200, "duration_ms": 142, "attempted_at": "2026-05-07T15:48:01Z" },
    { "id": "01HFY1B7N9", "status": "failed", "http_status": 504, "duration_ms": 30100, "attempted_at": "2026-05-07T15:42:11Z" }
  ]
}

What's next