OAuth 동의와 앱별 권한
클라이언트가 연결하면 pumati.app에 클라이언트 이름과 돌아갈 곳(Claude Code·Codex·Cursor는 내 컴퓨터에서 실행 중인 프로그램, claude.ai·ChatGPT는 각자의 사이트)이 적힌 동의 화면이 열려요. 요청은 15분 동안 유효해요. 여기서 고르는 것:
- 앱마다 허용할 권한. 고르지 않은 앱은 목록에 나오지 않고 이 연결로 쓸 수 없어요.
- 새 앱을 만들어도 되는지와 새 앱에 줄 권한. 만들려면 작성 권한이 필요해요.
- 지출 한도(크레딧, 지출 한도).
권한
| 권한 | 할 수 있는 일 |
|---|---|
read 읽기 | list_apps, list_app_tests, get_test, wait_for_updates, list_feedback, get_feedback: 미션, 결과, 피드백 조회 |
write 작성 | upsert_app(이름 바꾸기), register_build, create_test, create_comparison, update_test, record_resolution, create_retest: 초안과 기록, 지출 없음 |
publish 게시 | publish_test, adjust_test, cancel_test: 크레딧을 예약하거나 돌려받고 모집을 시작·변경·종료. review_feedback: 제출물 판정(승인하면 보상 지급) |
작성과 게시에는 항상 읽기가 함께 들어가요. 무언가를 바꾸는 에이전트는 바꾼 결과를 볼 수 있어야 해요.
토큰 권한
클라이언트는 OAuth 요청에서 더 좁은 권한(read, write, publish)만 요청할 수도 있어요. 토큰과 앱 허용 범위에 모두 있는 권한만 쓸 수 있고, 아니면 FORBIDDEN이에요. 연결은 자기 앱만 볼 수 있어요. 허용 범위에 없는 앱과 그 앱의 미션·피드백은 없는 것과 똑같이 NOT_FOUND예요.
철회
pumati.app/dev/mcp에 내 연결과 앱, 권한, 지출이 나와요. 철회하면 다음 호출부터 FORBIDDEN이에요. 도구를 부를 때마다 허용 범위를 다시 읽으니 남아 있는 접근이 없어요.