Skip to content

Improve onboarding documentation with quickstart guide and test agent credentials#137

Merged
bokelley merged 3 commits into
mainfrom
bokelley/improve-onboarding-docs
Oct 17, 2025
Merged

Improve onboarding documentation with quickstart guide and test agent credentials#137
bokelley merged 3 commits into
mainfrom
bokelley/improve-onboarding-docs

Conversation

@bokelley

Copy link
Copy Markdown
Contributor

Summary

Significantly improves AdCP onboarding documentation based on user feedback from Slack. Addresses common confusion around authentication, testing, and getting started.

Changes

New Documentation

  • docs/quickstart.md: Comprehensive 5-minute quickstart guide with:
    • Public test agent with free credentials for both MCP and A2A protocols
    • Clear authentication requirements (public vs authenticated operations)
    • Step-by-step curl examples using the test agent
    • NPM client examples with working credentials
    • Troubleshooting section for common errors

Enhanced Documentation

  • docs/reference/authentication.md:

    • Clear lists of public vs authenticated operations
    • Credential acquisition process
    • Multi-agent credential requirements
    • Error response examples
  • docs/media-buy/advanced-topics/testing.md:

    • Test agent credentials at the top
    • Updated testing platform link
  • docs/intro.md:

    • Prominent "Quick Start" section
    • Links to testing platform, quickstart guide, and test agent
  • docs/protocols/getting-started.md:

    • Callout linking to quickstart guide
  • docs/media-buy/task-reference/get_products.md:

    • Authentication behavior section explaining limited vs full results

Test Agent Credentials

Agent URL: https://test-agent.adcontextprotocol.org

MCP Token: 1v8tAhASaUYYp4odoQ1PnMpdqNaMiTrCRqYo9OJp6IQ
A2A Token: L4UCklW_V_40eTdWuQYF6HD5GWeKkgV8U6xxK-jwNO8

Problems Solved

✅ Users asking "how do we get a token?" → Test agent tokens provided in multiple locations
✅ Users confused about auth requirements → Clear lists of public vs auth-required operations
✅ Users getting "Invalid request parameters" → Troubleshooting section added
✅ Users not finding test resources → Testing platform linked prominently everywhere
✅ Credential acquisition unclear → Step-by-step process documented

Testing

  • ✅ All schemas validate
  • ✅ All examples validate
  • ✅ TypeScript compiles
  • ✅ Docusaurus builds successfully
  • ✅ No broken links

🤖 Generated with Claude Code

Co-Authored-By: Claude noreply@anthropic.com

@bokelley bokelley merged commit fbe3436 into main Oct 17, 2025
5 checks passed
bokelley added a commit that referenced this pull request Mar 23, 2026
Replace the avatar URL text input with a file upload UI on the community
profile edit page. Members can now upload JPEG/PNG photos (max 2MB)
directly rather than needing to paste an external URL.

- New avatar routes: upload, serve, and delete endpoints
- Magic byte validation to prevent MIME spoofing
- Rate limiting (10 uploads / 15 min)
- Security headers (nosniff, Content-Disposition)
- DB migration adds avatar_data BYTEA column with CHECK constraint

Resolves Escalation #137

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
bokelley added a commit that referenced this pull request Mar 23, 2026
Connect the existing portrait system to community profiles instead of
building a separate photo upload pipeline. When a portrait is approved,
it automatically becomes the user's community avatar. When removed, the
avatar is cleared (only if it pointed to a portrait).

- Auto-sync avatar_url on portrait approve/remove (transactional)
- Backfill migration for existing approved portraits
- Mount portrait API routes (were defined but never wired up)
- Replace avatar URL text input with portrait-aware display
- Remove avatar_url from profile form submission

Resolves Escalation #137

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
bokelley added a commit that referenced this pull request Mar 23, 2026
* feat: use member portraits as community profile avatars

Connect the existing portrait system to community profiles instead of
building a separate photo upload pipeline. When a portrait is approved,
it automatically becomes the user's community avatar. When removed, the
avatar is cleared (only if it pointed to a portrait).

- Auto-sync avatar_url on portrait approve/remove (transactional)
- Backfill migration for existing approved portraits
- Mount portrait API routes (were defined but never wired up)
- Replace avatar URL text input with portrait-aware display
- Remove avatar_url from profile form submission

Resolves Escalation #137

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: repair broken vitest tests and wire them into CI

The server/tests/unit/ vitest suite was never included in `npm test` or
the pre-commit hook — only Jest tests in tests/ ran. This let 8 test
files drift out of sync with their source code across multiple PRs.

Fixes:
- training-agent: error shape changed to adcpError(), creative_id now required
- dynamic-prompts: function became async, prompt titles changed
- formats: mock constructor incompatible with Vitest 4.x
- brandfetch-cache: industry→industries (singular to array)
- email-notification: subject line and greeting format changed
- member-context: section headings changed, removed Addie history section
- thread-service: skip when no DATABASE_URL (integration test)
- adagents-manager: replace vi.doMock with axios mock

Adds `test:server-unit` script and includes it in the `test` pipeline
so these tests run on every commit going forward.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: address code review and security review findings

- Remove avatar_url from community profile API allowedFields (was still
  writable via direct API calls even though the form no longer sends it)
- Add status='approved' filter to getPortraitData (rejected portraits
  were publicly accessible)
- Check rowCount in approvePortrait before proceeding (mismatched
  portraitId/profileId silently set avatar_url)
- Guard approve path against overwriting external avatars (only set
  avatar_url if null, empty, or already a portrait URL)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant